14

我需要检测用户是否从 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 并获取版本号)?

4

4 回答 4

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
}
于 2011-08-29T18:21:49.483 回答
2

你没有在你的问题中明确提到为什么你特别需要检测 IE9,所以一般来说,以下建议是有效的:

而不是检测特定的浏览器/版本,您应该检测特定的功能。Modernizr是开始寻求帮助的好地方。

于 2011-08-29T18:22:17.137 回答
1

这个怎么样:

if (!($.browser.msie && $.browser.version < 9.0)) {
    // Apply only to IE8 and lower
}

请注意,IE8 显示为 IE7

于 2011-11-19T04:51:04.740 回答
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]>
于 2015-05-14T06:23:36.697 回答