如何使用 jQuery 检测 IE 8?

IT技术 javascript jquery
2021-02-28 12:55:32

我不仅需要检测浏览器类型,还需要使用 jQuery 检测版本。大多数情况下,我需要确定它是否是 IE 8。

我不确定我是否做对了。

如果我做 :

if (jQuery.browser.version >= 8.0) {
dosomething}

我不确定它是否适用于 8.123.45.6 版?

编辑:请注意,JQuery 2+ 已放弃对 IE8 及更低版本的支持,因此不能再用于检测 IE8。如果使用当前版本的 JQuery,则必须使用非 JQuery 解决方案。

6个回答

我认为最好的方法是这样的:

来自 HTML5 样板:

<!--[if lt IE 7]> <html lang="en-us" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7]>    <html lang="en-us" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="no-js ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]-->

在JS中:

if( $("html").hasClass("ie8") ) { /* do your things */ };

尤其是因为$.browser它已从 jQuery 1.9+ 中删除。

@meo 我也喜欢这个实现。但是有没有理由将类附加到<html>而不是<body>
2021-04-24 12:55:32
@meo 有趣。谢谢。
2021-04-25 12:55:32
但如果您的网站带有“Content-type: application/xhtml+xml”标头则不起作用,而不是这些条件注释被忽略
2021-05-03 12:55:32
这是一种非常聪明的检测 IE 版本的方法。我非常喜欢!
2021-05-09 12:55:32
非常聪明……但值得注意的是,您需要检查 HTML5BP 中条件添加的当前类。目前我认为这门课是lt-ie9AOTie8
2021-05-19 12:55:32

这应该适用于所有 IE8 次要版本

if ($.browser.msie  && parseInt($.browser.version, 10) === 8) {
  alert('IE8'); 
} else {
  alert('Non IE8');
}

- 更新

请注意,$ .browser从jQuery的1.9移除

它记录在jQuery API 文档中使用 来检查 Internet Explorer,$.browser.msie然后使用 来检查其版本$.browser.version

更新: $.browser 在 jQuery 1.9 中删除

jQuery.browser() 方法自 jQuery 1.3 起已被弃用,并在 1.9 中删除。如果需要,它可以作为 jQuery Migrate 插件的一部分使用。我们建议将特征检测与 Modernizr 等库结合使用。

如果我这样做: if (jQuery.browser.version >= 8.0) { dosomething} 我不确定它是否适用于版本 8.123.45.6 或者它会适用吗?
2021-05-11 12:55:32
jquery.browser 在 1.9 中被移除
2021-05-14 12:55:32
它是一个字符串,所以你应该这样做if(jQuery.browser.version.substring(0, 2) == "8.") { ... }这样它将适用于所有版本的 IE8。
2021-05-15 12:55:32
谢天谢地,它仍然存在并且没有提到弃用,@bendytree
2021-05-15 12:55:32
jQuery.browser在 1.3 中已弃用,将来可能会移至插件中。查看 jQuery.browser 文档
2021-05-19 12:55:32

不要忘记,您还可以使用 HTML 来检测 IE8。

<!--[if IE 8]>
<script type="text/javascript">
    ie = 8;
</script>
<![endif]-->

在你所有的脚本之前拥有它会让你只检查“ie”变量或其他任何东西。

这是最好的方法,只需重定向到另一个页面,上面写着“你为什么使用 IE8?” 现在升级!
2021-04-24 12:55:32
此语法还支持“小于”(“[if lt IE 7]”)和“大于”(“[if gt IE 8]”)比较器。
2021-04-30 12:55:32
按照今天的标准,我会问他们为什么要使用 IE。
2021-04-30 12:55:32
这看起来是最好的解决方案,因为 JQuery 2.1.1 不适用于 IE8,因此不能用于检测 IE8!
2021-05-04 12:55:32
<!--[if lte IE 8]> 用于包含 ie8
2021-05-12 12:55:32

如果浏览器不是 IE8,则document.documentMode未定义,

它为标准模式返回 8,为“与 IE7 兼容”返回 7

如果它作为 IE7 运行,则有很多 css 和 dom 功能将不受支持。

if(document.documentMode!== undefined && document.documentMode == 8){ ... }
2021-04-23 12:55:32
很好的答案!这将返回 IE8 到 IE11 的版本号(与 IE5 到 IE9 的条件注释相比 - 如果有人仍然需要检测真正的 IE7 或 IE6,您将需要使用条件注释)。请注意,根据文档,它可能会0在页面加载时返回- “稍后尝试确定文档兼容模式”(即文档准备就绪后)。
2021-04-29 12:55:32
对于一些仍然大量使用 IE8 的应用程序——即美国学校——@Don McCurdy 的方法既简单又有效。与 Modernizr 配合使用,效果很好。
2021-05-07 12:55:32
请注意,IE9 返回 9。不过,现在 $.browser 不再是一个好的解决方案,这应该是一个更高投票的答案。尝试:if ((document.documentMode || 100) < 9) { // IE8
2021-05-13 12:55:32