bic*_*cle 2 jquery internet-explorer jquery-address pushstate
我正在寻找一个好的pushstate jquery插件来使用ajax-json(和js关闭时的php的mod_rewrite)并找到jQuery Address.我非常喜欢它,因为它有很好的文档记录并且易于使用.(我从来没有真正弄清楚history.js)我注意到,伟大的互联网浏览器(9)在href字段中放置了哈希.它也是在示例中做到的:http://www.asual.com/jquery/address/samples/state/contact我已经测试了其他浏览器,但你只能通过优秀的Internet Explorer看到这一点.有什么方法吗?
Internet Explorer 9 不支持 History API.相反,使用这些api的应用程序必须回退到onhashchange
功能,利用该位置的片段在功能较少的浏览器中复制类似的功能.
你所看到的是预期的; Internet Explorer 10+支持这种较新的功能,因此不需要添加/#
到url来记录和保留状态历史记录.Internet Explorer 9不支持History API,因此必须进行规定.
您提到了history.js,它扩展了对history.pushState
非HTML5浏览器等方法的支持.在这个项目的GitHub页面上,您可以看到一些关于网址在新浏览器中的显示方式的示例,以及它们在旧浏览器中的显示方式.正如预期的那样,您现在正在经历的模式也在那里生成.
虽然在Internet Explorer 9中查看时,网址中有一个片段,但请注意,这并不反映服务器上请求的路径.请注意在浏览器中输入的请求地址,以及"网络"选项卡中对服务器的实际请求:
您在IE9中获得404的原因是因为在不支持HTML5 History API的浏览器中,jQuery.address将重新导航到您在设置中提供的任何状态.因此,当您输入网址时,会有一个初始请求传递给您的服务器.此地址由mod_rewrite处理,您RewriteRules
确定要加载的初始内容.
加载初始内容并设置jQuery.address后,甚至会在您的设置路径中进行新的导航.在你的情况下,这是/posters
.不幸的是,你没有RewriteRules
提供内容/posters
,所以最终的结果是404.再次,这只发生在IE9,因为IE9不支持History接口.
这可以通过再次访问F12开发人员工具的网络选项卡并捕获数据来确认.打开该选项卡后,按"开始捕获",然后键入购物车上产品的完整路径.你会注意到对该完整路径的初始请求,然后加载了几个依赖项.不久之后,您将看到另一个导航事件发生在您提供的任何路径上$.address.state
.