如何使用单个 IF 语句为除 IE8 及更低版本的所有浏览器执行代码?
问问题
199 次
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 回答