2008-12-09 16 views
90

Bir web uygulaması geliştiriyorum. İçinde, bir kullanıcı kategorilerden birini tıkladığında her seferinde bir güncelleme panelinin uygun içeriği yüklediği kategoriler adlı bir bölümüm var.Sayfayı yenilemeden tarayıcınızın adres çubuğunu değiştirmenin bir yolu var mı?

kullanıcı ben Sayfayı yenilemeden

www.mysite.com/products/{selectedCat} 

gibi bir şey için

www.mysite.com/products 

gelen tarayıcının adres çubuğu url değiştirmek istediğiniz kategoriyi tıklandığında sonra.
Bunu başarmak için kullanabileceğim bir çeşit JavaScript API var mı?

cevap

3

Bunun, adres çubuğunun sorunlu bir kötüye kullanımı olacağından ve kimlik avı saldırılarını teşvik edebildiğinden (en azından tamamen farklı bir adrese dönüşerek) mümkün olduğunu düşünmüyorum. Eğer

www.mysite.com/products/# {

olmaktan memnun olup olmadığını ben doğrudan bu url taşımadan tamamen farklı url adres çubuğunu manipüle inanıyoruz

+0

Aksine unintuitive olmaktan çok, ben bunu phishing saldırılarını için kötü amaçla kullanılabilecek çünkü yapabilmek should'n düşünüyorum. Her neyse, bu +1. – OregonGhost

+0

Evet, bu sadece bana oldu. İyi bir fikir değil. Teşekkürler OregonGhost. – Galwegian

+1

I * do * mümkün olduğunu düşünün ... Wikimapia ... Harita etrafında sürüklediğinizde, URL değişti ... –

7

, güvenlik nedeniyle izin verilmez selectedCat}

Yani aynı sayfadaki bir çapa stili bağlantısı, daha sonra çoğu javascript kütüphanesinde bulunan çeşitli geçmiş/"geri düğmesi" komut dosyalarına bakın.

güncelleme panelin söz size asp.net ajax geçmişi kontrolü Söylediğiniz şekilde yapılamaz

-1

Bu başlamak için iyi bir yerdir bu durumda, asp.net kullanarak edilir tahmin yol açar o. Somej.net tarafından önerilen yöntem, alabileceğiniz en yakın yöntemdir. Aslında AJAX çağında çok yaygın bir uygulamadır. Gmail bile bunu kullanıyor.

31

Adamların daha önce söylediklerini eklemek için onclick işlevinde istediğiniz URL ile eşleştirmek için window.location.hash özelliğini düzenleyin. sanchothefat tarafından önerildiği gibi

window.location.hash = 'category-name'; // address bar would become http://example.com/#category-name 
+0

yoktur ... phishing karşı güvenli mi? –

-1

"window.location.hash"

bir ve bunu yapmanın tek yolu olmalıdır. Bu özelliği gördüğüm tüm yerler, her zaman # URL’den sonraki. yeniden yüklemeden url değiştirebilir HTML5 ile

152

: tarayıcının tarihinde yeni yazı yapmak istiyorsanız

(yaniEğer sadece geri dönmek mümkün olmadan url değiştirmek istiyorsanız geri düğmesi

window.history.pushState('Object', 'Title', '/new-url'); 

) çalışacak

window.history.replaceState('Object', 'Title', '/another-new-url'); 
nesne ajax navigasyon için kullanılabilir

:

window.history.pushState({ id: 35 }, 'Viewing item #35', '/item/35'); 

window.onpopstate = function (e) { 
    var id = e.state.id; 
    load_item(id); 
}; 

okuyun burada daha fazla: http://www.w3.org/TR/html5-author/history.html

bir çare sollution: https://github.com/browserstate/history.js

+4

+1 Ayrıca not; bunlar URL'deki 'yol 've/veya' sorgu dizgisini değiştirir; protokolü, etki alanını veya bağlantı noktasını değiştiremezler (diğerlerinin de işaret ettiği gibi bir güvenlik sorunu olur). 'Hash' fonksiyonu yukarıda bu etkinleştirmek için bir yol yoktur,} fazladan Sadece bir yan soru olarak –

+2

sadece söyleyerek çapa (veya parça kimliği) değiştirebilirsiniz URL’ler daha sonra Google’da dizine eklenecek mi? – Zhanger

+0

eklendi vardır, '/ madde/35'} sizin örnekte, –

İlgili konular