我正在使用JS编写自己的Ajax历史库。我遇到了IE6和IE7的问题。有人可以详细说明为什么会发生以下情况吗?
IE6& 7
我可以在不刷新页面的情况下设置哈希值。
window.location = 'site.com/index.html#' + pageNumber;
我可以转到第1页,第2页,第3页,依此类推。当我在第3页并点击后退按钮时,我没有被送回第2页。相反,我完全退出了index.html!看起来IE并不认为不同的哈希值是历史上的不同点。
IE7
在IE7向后兼容模式下,IE8声称它具有onhashchange监听器。if ('onhashchange' in window) {
// true in IE7
window.onhashchange = someFunction();
}
但是,当URL更改时,IE7永远不会执行someFunction()。这意味着它涉及到onhashchange但从未实现过它。
答案 0 :(得分:2)
答案 1 :(得分:1)
已知IE6和IE7不支持hashchange
事件;看起来你在IE8的IE7兼容模式中发现了一个bug(?)。
如果要在这些浏览器中使用此功能,您需要使用像Phong Nguyen的答案中的库来通过隐藏的iframe模拟hashchange支持。在许多情况下,这样的库也会修复你的后退按钮问题;我知道他联系到的那个。