ben gibi bir ajax arama-form var ateşlenir sayfa:HTML5: Yenile popstate
url:/arama/
=> Kullanıcı bir düğmeyi bir arama terimi girer ve tıklama
= > arama tamamlandı ve ajax ile sonuçları bir div içinde sayfadaki
'da gösterir: Ama aynı zamanda kullanıcının & URL adresini arkadaşlarına yapıştırmasını ve önceki aramalarda gezinmesini de istiyorum. ? Aramayı tetiklerken tarayıcılar kullanarak
/arama/
için/arama/q = yourkeyword
gelen addressbar içinde Yani, url değiştirin:
window.history.pushState("", "Search for "+keyword, "/search/?q="+keyword);
Bu, tarayıcı adres çubuğundaki URL’yi/search /? Q = anahtar kelimelerinize değiştirir ve iyi çalışır.
Şimdi, arka tuşa basıldığında, tarayıcıların adres çubuğu tekrar gösteriliyor/arama /, bu iyi. Ancak sayfa içeriği yeniden yüklenmemiş, yine de/search /? Q = anahtar kelimenizdeki sonuçları gösterir.
yüzden ekledi:window.addEventListener("popstate", function(e)
{ location.reload();
});
bu doğru yolu var mı? FF ve Chrome gibi masaüstü tarayıcılarda iyi çalışır, ancak örneğin iOS'ta, popstate-event,/search/adresindeki ilk arama yükünün üzerine yüklenir ve bu, sayfanın hiç bitmeyen bir şekilde yeniden yüklenmesiyle sonuçlanır.
Bunu yapmanın doğru yolu nedir?
Cevabınız için teşekkür ederiz. Ben location.reload() düşünüyorum ve çözümünüz aynı. Ancak sorun, iOS'un bir sayfayı yüklerken bile popstate etkinliğini tetiklemesidir. Bu nedenle, yalnızca/search/(daha önce herhangi bir pushState yapmadan) tarama, popstate-olayını tetikler. – Werner
Farklı senaryoları test etmeniz gerekecek. Yapacağım bir sonraki şey, sayfa bittikten sonra ayarlanan bir değişken yapmaktır sanırım. Ve sadece bu değişken ayarlanmışsa yeniden yükleyin. –