PushState kullanılıp kullanılamayacağını belirleyen bir kitaplık bilen var mı?Kullanarak pushState
bu kullanıyordum: http://support.github.com/discussions/site/2263-line-links-broken:
if(window.history.pushState){
window.history.pushState(null, document.title, path);
}else{
location.pathname = path;
}
Ama sadece yukarıdaki test geçer olsa bile çalışmamasına neden olur Safari 5.0.2 bir hata olduğunu öğrendim.
Diğer tuhaflıklar olabileceğini düşünüyorum ve birileri muhtemelen onları zaten bulup sarstı ama henüz bir şey bulamadım.
Düzenleme: pushState geçmişi yığının üstüne iter ve url değiştirir ama location.pathname güncelleme değildir gibi görünüyor gördüklerime @Crescent Taze
. Kodumda, yolun güncellenmiş olup olmadığını kontrol etmek için setInterval kullanıyorum. Safari'de
var cachedPathname = location.pathname;
if(window.history.pushState){
cachedPathname = location.pathname;
setInterval(function(){
if(cachedPathname !== location.pathname){
cachedPathname = location.pathname;
//do stuff
}
}, 100);
}
pushState url değiştirdiğinde değişmez location.pathname 5.0.2. Bu, diğer tarayıcılarda ve Safari sürümlerinde çalışır.
Bağlantılı sayfanın hangi bölümü "window.history.pushState" için testin geçersiz olduğunu söylüyor? Görünüşe göre hata, belirli bir github’ın yaptığı şeyle ilgilidir ('pushState',' toplayabildiğimden 'location.hash' ayarıyla bağlantılı olarak). –