有谁知道确定是否可以使用 pushState 的库?
我正在使用这个:
if(window.history.pushState){
window.history.pushState(null, document.title, path);
}else{
location.pathname = path;
}
但我刚刚发现 Safari 5.0.2 中存在一个错误,即使上述测试通过,它也无法工作:http: //support.github.com/discussions/site/2263-line-links-broken。
我在想可能还有其他问题,有人可能已经找到了它们并将它们包裹起来,但我还没有找到任何东西。
编辑: @Crescent Fresh
从我所看到的看来,pushState 似乎推送到历史堆栈并更改了 url,但没有更新 location.pathname。在我的代码中,我使用 setInterval 来检查路径是否已更新。
var cachedPathname = location.pathname;
if(window.history.pushState){
cachedPathname = location.pathname;
setInterval(function(){
if(cachedPathname !== location.pathname){
cachedPathname = location.pathname;
//do stuff
}
}, 100);
}
在 Safari 5.0.2 中,当 pushState 更改 url 时 location.pathname 不会更改。这适用于其他浏览器和 Safari 版本。