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 问题的主要内容,如果未能解决你的问题,请参考以下文章
通过 JavaScript 或 jQuery 停止在 hashchange 事件上加载图像
让 hashchange 事件在所有浏览器(包括 IE7)中工作
hashchange 事件未在 IE10 和 IE11 中触发,具有 history.pushState 和 url 手动操作的组合