我需要检测用户是否从jQuery插件运行旧版本的IE(IE9很好),因此我无法控制HTML。
我们不鼓励我们解析用户代理字符串并使用$.browser.msie
。 $.support
方法也未涵盖此问题。
所以,我发现这有效,但我不确定这是否是“良好做法”。
$('body').append('<!--[if lte IE 8]><script>$("body").addClass("oldie");</script><![endif]-->');
var old_ie = $('body').is('.oldie');
您是否会使用此方法或坚持解析用户代理字符串(我需要弄清楚它是否是IE并获取版本号)?
答案 0 :(得分:16)
你可以运行这个
var ie = (function () {
var undef, v = 3, div = document.createElement('div');
while (
div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->',
div.getElementsByTagName('i')[0]
);
return v > 4 ? v : undef;
}());
检测IE的版本。
来源: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment
然后
if ( ie < 9 ) {
// do your stuff, for instance:
window.location = 'http://getfirefox.com'; // :p
}
答案 1 :(得分:2)
你没有在你的问题中明确提到为什么你有特殊需要检测IE9,所以一般来说以下建议都有:
您应该检测特定功能,而不是检测特定的浏览器/版本。 Modernizr是一个开始寻求帮助的好地方。
答案 2 :(得分:1)
这个怎么样:
if (!($.browser.msie && $.browser.version < 9.0)) {
// Apply only to IE8 and lower
}
请注意,IE8显示为IE7
答案 3 :(得分:1)
https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx 看到上面的链接,这可能是官方答案:) 简而言之,在您的html页面中编写以下代码。
<!--[if gte IE 9]>
<p>You're using a recent version of Internet Explorer.</p>
<script type="text/javascript">//do something</script>
<![endif]-->
<!--[if lt IE 9]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<script type="text/javascript">//do something</script>
<![endif]-->
<![if !IE]>
<p>You're not using Internet Explorer.</p>
<script type="text/javascript">//do something</script>
<![endif]>