Internet explorer Internet Explorer将哈希放入带有jQuery地址的href中

Internet explorer Internet Explorer将哈希放入带有jQuery地址的href中,internet-explorer,jquery,pushstate,jquery-address,Internet Explorer,Jquery,Pushstate,Jquery Address,我正在寻找一个好的pushstate jquery插件来处理ajax json(以及关闭js时php的mod_重写),并找到jquery地址。我非常喜欢它,因为它有很好的文档记录,并且易于使用。(我从来没有真正弄明白history.js)但是我注意到伟大的InternetExplorer(9)在href字段中放了哈希。在这个例子中它也做到了:我已经测试过其他浏览器,但是你只能在伟大的InternetExplorer中看到这一点。有没有办法解决这个问题?Internet Explorer 9使用历

我正在寻找一个好的pushstate jquery插件来处理ajax json(以及关闭js时php的mod_重写),并找到jquery地址。我非常喜欢它,因为它有很好的文档记录,并且易于使用。(我从来没有真正弄明白history.js)但是我注意到伟大的InternetExplorer(9)在href字段中放了哈希。在这个例子中它也做到了:我已经测试过其他浏览器,但是你只能在伟大的InternetExplorer中看到这一点。有没有办法解决这个问题?

Internet Explorer 9使用历史API。相反,使用这些api的应用程序必须回退到
onhashchange
功能,该功能利用位置片段在功能较差的浏览器中复制类似的功能

你所看到的是预期的,因此,不需要向url添加
/#
来记录和保存状态历史。Internet Explorer 9不支持历史API,因此必须作出规定

您提到了history.js,它将对
history.pushState
等方法的支持扩展到非HTML5浏览器中。在这个项目中,您可以看到一些示例,说明URL在较新浏览器中的显示方式,以及在较旧浏览器中的显示方式。正如所料,您现在体验的模式也在那里产生

尽管在Internet Explorer 9中查看时,url中有一个片段,但请注意,这并不反映服务器上请求的路径。注意在浏览器中输入的请求地址,以及在“网络”选项卡中向服务器发出的实际请求:

解决404问题 在IE9中获得404的原因是,在不支持HTML5历史API的浏览器中,jQuery.address将重新导航到您在设置中提供的任何状态。因此,当您键入url时,会将初始请求传递给服务器。此地址由mod_rewrite处理,您的
RewriteRules
确定要加载的初始内容

当加载初始内容并设置jQuery.address时,甚至会对设置路径进行新的导航。在您的情况下,这是
/posters
。不幸的是,您没有为
/posters
提供内容的
重写规则,因此最终的结果是404。同样,这只发生在IE9中,因为IE9不支持历史接口

这可以通过再次访问F12开发者工具的网络选项卡并捕获数据来确认。打开该选项卡后,按“开始捕获”,然后键入购物车上产品的完整路径。您将注意到对该完整路径的初始请求,然后加载几个依赖项。不久之后,您将看到另一个导航事件发生在
$.address.state
中提供的任何路径上