为了检测IE,大多数Javascript库都会执行各种技巧。
YAHOO.env.ua = function()
yahoo.js
为了仅检测Javascript中的IE,我们可以简单地添加到页面中:
<!--[if IE]><script type="text/javascript">window['isIE'] = true;</script><![endif]--> <script type="text/javascript" src="all-your-other-scripts-here.js"></script>
现在window.isIE,只需执行以下操作即可为我们所有的Javascript代码设置变量:
window.isIE
if(window.isIE) ...
除了由于必须将其添加到所有页面而可能导致的痛苦之外, 还有其他我可能没有意识到的问题/注意事项吗?
James Padolsey在GitHub上放了一些代码片段,我将在这里引用:
// ---------------------------------------------------------- // A short snippet for detecting versions of IE in JavaScript // without resorting to user-agent sniffing // ---------------------------------------------------------- // If you're not in IE (or IE version is less than 5) then: // ie === undefined // If you're in IE (>=5) then you can determine which version: // ie === 7; // IE7 // Thus, to detect IE: // if (ie) {} // And to detect the version: // ie === 6 // IE6 // ie > 7 // IE8, IE9 ... // ie < 9 // Anything less than IE9 // ---------------------------------------------------------- // UPDATE: Now using Live NodeList idea from @jdalton var ie = (function(){ var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0] ); return v > 4 ? v : undef; }());
当然,所有的荣誉都应该归詹姆斯所有,我只是信使(但如果我的复制粘贴操作有误,请射击信使)。
还要看看创建的叉子。保罗·爱尔兰(PaulIrish)在评论中解释了内部工作原理。