检测较旧的 IE 版本

发布于 2024-12-01 17:41:21 字数 422 浏览 1 评论 0原文

我需要通过 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 并获取版本号)?

I need to detect if the user is running an older version of IE (IE9 is fine) from a jQuery plugin, so I won't have control over the HTML.

We've been discouraged from parsing the user-agent string and using $.browser.msie. The $.support method doesn't cover the problem either.

So, I figured out that this works, but I'm not sure if it is "good practice".

$('body').append('<!--[if lte IE 8]><script>$("body").addClass("oldie");</script><![endif]-->');
var old_ie = $('body').is('.oldie');

Would you use this method or stick with parsing the user-agent string (I'll need to figure out if it's IE and get the version number)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

剩一世无双 2024-12-08 17:41:21

您可以运行它

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
}

You can run this

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;
}());

to detect the version of IE.

Source: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment

And then

if ( ie < 9 ) {
    // do your stuff, for instance:
    window.location = 'http://getfirefox.com'; // :p
}
帅的被狗咬 2024-12-08 17:41:21

您在问题中没有明确提及为什么您需要检测 IE9,因此一般来说以下建议成立:

您不应该检测特定浏览器/版本,而应该检测特定功能。 Modernizr 是一个获得这方面帮助的好地方。

You didn't explicitly mention in your question why you had a specific need to detect for IE9, so in general the following advice holds:

Rather than detecting for a specific browser / version, you should instead be detecting for specific features. Modernizr is a good place to start for help with this.

浮生未歇 2024-12-08 17:41:21

怎么样:

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

请注意,IE8 显示为 IE7

How about this:

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

Note that IE8 shows up as IE7

弱骨蛰伏 2024-12-08 17:41:21

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]>

https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx
See the link above, this might be the official answer :)
Briefly, code the following in your html page.

<!--[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]>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文