在最新的jquery 1.9
下运行时,我在即兴ver 4.1中遇到错误未捕获的TypeError:无法读取未定义的属性“msie”
以前版本的jquery不是这种情况。
即兴的违规行是第20行:
var ie6 = ($.browser.msie && $.browser.version < 7);
答案 0 :(得分:24)
您可以修补 Impromptu 替换此行:
var ie6 = ($.browser.msie && $.browser.version < 7);
......通过这个:
var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
...现在它可以与jQuery v1.9.0 +一起使用。 (可选)您可以回滚到jQuery v1.8.3
编辑(2013年3月12日)
感谢@johntrepreneur的评论,你是对的。 两个音符:
此编辑的行:
var ie6 = ( navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/) );
......应该被这个替换:
var ie6 = ( navigator.userAgent.match(/msie [6]/i) );
...我的坏,我赶紧写补丁。这应该可以解决问题。
Impromptu 已完全删除了 last commit (2013年3月25日此原始帖子后)的IE6支持。 OP带来的问题是 Impromptu 确实打破了jQuery v1.9 + ... 将 Impromptu js文件更新为last version还解决了问题。
答案 1 :(得分:6)
我更喜欢这个定位范围,只会在&lt; IE9&amp; jQuery 1.9 +
if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
{
//code here
}
答案 2 :(得分:2)
自从Jquery弃用$ .browser功能以来 我找到的最简单的方法是在javascript中创建一个全局
var LTE_IE9 = false;
并使用条件HTML IE选择器
<!--[if lte IE 9]>
<script>LTE_IE9 = true;</script>
<![endif]-->
答案 3 :(得分:0)
我用它。
var browser = $.browser;
if ( ! browser ) {
var ua = navigator.userAgent.toLowerCase();
var m = /(msie) ([\w.]+)/.exec( ua ) || ! /compatible/.test(ua) && /(mozilla)/.exec( ua ) || [];
browser = { version: m[2] };
browser[ m[1] ] = true;
}
答案 4 :(得分:0)
添加Jquery migrate
插件
// cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js
$.browser.msie
已从&gt;中删除jquery 1.9.X
答案 5 :(得分:0)
如上所述, $。浏览器在jQuery中不再存在,因为版本 1.9 。
答案 6 :(得分:0)
因为$ .browse自jQuery V. 1.4以来被弃用,并在jQuery V. 1.9之后被删除
仍然可以通过这些代码行(针对所有浏览器)修复此问题
jQuery.browser = {};
jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());
对我来说很好;