İçeriği dinamik olarak yüklemek için karma kullanıyorum. Geri düğmesini çalıştırmak için karma değişiklikleri ele geçiriyorum. Ancak bazen hash değiştirilmiş fonksiyonunu tetiklemeden hash değerini değiştirmem gerekiyor (ör., Sayfa sunucu tarafına yönlendirildiğinde ve içerik geri döndüğünde karma güncellemeye ihtiyacım olduğunda.)Karma bir hashchange olayı tetiklemeden hash değerini değiştir
En iyi çözüm hashchange olayını açmak, değişikliği yapmak ve sonra yeniden adlandırmaktır. Ancak, bu zaman uyumsuz olarak gerçekleştiğinden, çok hızlı bir şekilde yeniden ispat ettiğini ve hala karma değişimin yakalandığını görüyorum. Şu anda
Benim çözümüm çok kötü: Bir setTimeout içinde yeniden bağlantı kurma. Daha iyi bir fikri olan var mı?
$(window).unbind('hashchange', hashChanged);
window.location.hash = "!" + url;
setTimeout(function(){
$(window).bind('hashchange', hashChanged);
}, 100);
Düzenleme:
Amir Raminfar önerisi bir zaman aşımı gerektirmeyen bir çözüm beni istenir.
function hashChanged(event){
if(_ignoreHashChange === false){
url = window.location.hash.slice(2);
fetchContent(url);
}
_ignoreHashChange = false;
}
güzel, basit bir çözüm, ister yapmalıdır bir cevap – Peter
tek şey, yeni hash'ın _ignoreHashChange = true değerini belirlemeden önceki eski değere eşit olmadığını kontrol etmektir; – Kasheftin
Tüm şeyler üzerinde iyi kontrol sağlayan Cowboy's BBQ kütüphanesine göz atmak isteyebilirsiniz Geri ve Hashchange: http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js. html – hybernaut