JS Hashchange 事件的 msie 问题

Posted

技术标签:

【中文标题】JS Hashchange 事件的 msie 问题【英文标题】:msie issue with JS Hashchange Event 【发布时间】:2013-11-01 01:44:09 【问题描述】:

我正在尝试在Tutorial 之后使用 AJAX 加载我的基于 wordpress 的网站。所有代码对我来说都很有意义,但他们使用的是一个名为 JS Hashchange Event 的插件。我遇到的问题是它部分使用了$.browser.msie,所以当我使用jQuery 1.9 运行它时,我得到Uncaught TypeError: Cannot read property 'msie' of undefined 错误。我尝试添加 js 迁移插件,但它不起作用。我读到我可以添加这段代码

jQuery.browser=;(function()jQuery.browser.msie=false;
jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)\./))
jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;)();

但不知道放在哪里。有人有这个问题吗?或者也许是使用 AJAX 加载 wordpress 页面的更好方法(保持页眉和页脚静态)?

【问题讨论】:

【参考方案1】:

自 jQuery 1.9 起,$.browser 已被删除。

直接来自文档:$.browser

jQuery.browser() 方法自 jQuery 1.3 以来已被弃用,并且 在 1.9 中被删除。如果需要,它可以作为 jQuery 的一部分使用 迁移插件。我们建议将特征检测与库一起使用 比如 Modernizr。

如果需要,您可以使用jQuery migrate 插件来恢复已删除的功能。如果不行,可以试试Ben Alman's hashchange plugin,把$.browser.msie换成(document.documentMode != undefined)

【讨论】:

【参考方案2】:

此脚本有更新,请参考网址:https://github.com/georgekosmidis/jquery-hashchange

2013-29-11 修复:从 jQuery 1.9 开始,Ben 的代码中使用的 $.browser 不再受支持。

【讨论】:

以上是关于JS Hashchange 事件的 msie 问题的主要内容,如果未能解决你的问题,请参考以下文章

jQuery不支持hashchange事件

jsdom hashchange 事件

仅捕获不是由锚点点击引起的 hashchange 事件

通过 JavaScript 或 jQuery 停止在 hashchange 事件上加载图像

让 hashchange 事件在所有浏览器(包括 IE7)中工作

hashchange 事件未在 IE10 和 IE11 中触发,具有 history.pushState 和 url 手动操作的组合