Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE6/7上的Ajax历史被打破_Javascript_Ajax_Internet Explorer - Fatal编程技术网

Javascript IE6/7上的Ajax历史被打破

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声称它具有

我正在用JS编写自己的Ajax历史库。我遇到了IE6和IE7的问题。有人能详细说明为什么会发生以下情况吗

IE6和IE7

我可以在不刷新页面的情况下设置哈希值

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事件,它也应该让我通过“后退”按钮返回我以前的哈希值,对吗?