-1

如何使用单个 IF 语句为除 IE8 及更低版本的所有浏览器执行代码?

4

2 回答 2

0

我找到了答案,这很简单:

if ( parseFloat((navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]*)/)||[0,9])[1])>=9 ) {
    //do something for all browsers and IE9+
} else {
    //do something only for IE8 and lower
}

说明:
navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]*)/)返回一个数组,包括索引 0 中的整个字符串,以及索引 1 中的版本。如果未找到匹配项,它将返回 NULL。
一旦该短语返回 NULL,它将使用下一个操作数[0,9],索引 1 中的版本 9(您正在寻找的 IE 的最低版本)。
然后,我取索引 1 的值并检查它是否大于或等于 9。

那么这意味着什么?
这意味着每个不是 IE 的浏览器都会通过 IF,因为匹配总是返回 NULL,它会采用默认数组并最后检查 if 9>=9,这总是正确的。如果浏览器是IE,它会取浏览器的实际版本,并会检查它。在这种情况下,所有 IE9+ 版本都将通过 IF 语句,其余版本将失败。

希望它足够清楚。

于 2013-10-27T15:43:48.000 回答
0

如果它只是关于 HTML 或 CSS 的东西,你可以在你的 .html 文件中使用条件注释而不是 JavaScript。 http://www.quirksmode.org/css/condcom.html

在你的情况下,

<!--[if lte IE 8]>
Cool stuff for IE 8
<![endif]-->

编辑

<!--[if gte IE 8]>
Cool stuff for IE greater than IE 8
<![endif]-->
于 2013-10-27T16:00:13.633 回答