Javascript IE6/7上的Ajax历史被打破
我正在用JS编写自己的Ajax历史库。我遇到了IE6和IE7的问题。有人能详细说明为什么会发生以下情况吗 IE6和IE7 我可以在不刷新页面的情况下设置哈希值Javascript IE6/7上的Ajax历史被打破,javascript,ajax,internet-explorer,Javascript,Ajax,Internet Explorer,我正在用JS编写自己的Ajax历史库。我遇到了IE6和IE7的问题。有人能详细说明为什么会发生以下情况吗 IE6和IE7 我可以在不刷新页面的情况下设置哈希值 window.location = 'site.com/index.html#' + pageNumber; 我可以转到第一页、第二页、第三页,依此类推。当我在第3页并点击后退按钮时,我不会回到第2页。相反,我完全从index.html中删除了!似乎IE并不认为不同的散列值是历史上的不同点 IE7 IE7向后兼容模式下的IE8声称它具有
window.location = 'site.com/index.html#' + pageNumber;
我可以转到第一页、第二页、第三页,依此类推。当我在第3页并点击后退按钮时,我不会回到第2页。相反,我完全从index.html中删除了!似乎IE并不认为不同的散列值是历史上的不同点
IE7
IE7向后兼容模式下的IE8声称它具有onhashchange侦听器
if ('onhashchange' in window) {
// true in IE7
window.onhashchange = someFunction();
}
但是,当URL更改时,IE7从不执行someFunction()。这意味着它与onhashchange有关,但从未实现它。您是否尝试过此方法:已知IE6和IE7不支持
hashchange
事件;看起来您在IE8的IE7兼容模式中发现了一个bug(?)
如果您想在这些浏览器中使用此功能,您需要使用一个库,如Phong Nguyen的答案中的库,通过隐藏的iFrame模拟hashchange支持。在许多情况下,这样的库也会修复你的后退按钮问题;我知道他链接到的那个人是这样做的。不,我正在努力学习JS。我现在不想使用图书馆。如果有图书馆,这意味着其他人在过去也遇到过同样的问题,而且可能更干净。你应该使用这个库。总有一些框架可以解决任何关于堆栈溢出的问题。我试图了解潜在的问题,而不是如何使用框架来掩盖这个问题。即使IE6/7没有触发hashchange事件,它也应该让我通过“后退”按钮返回我以前的哈希值,对吗?