检查IE 10
如果用户使用IE 10,如何在页面加载时显示消息框?
function ieMessage() { alert("Hello you are using IE10"); }
我的网页是一个JSF facelet(XHTML)。
在没有条件注释和没有用户代理嗅探的情况下,检测这种情况的真正方法是使用条件编译:
<script type="text/javascript"> var isIE10 = false; /*@cc_on if (/^10/.test(@_jscript_version)) { isIE10 = true; } @*/ console.log(isIE10); </script>
运行这段代码之后,你可以随时使用下面的代码:
if (isIE10) { // Using Internet Explorer 10 }
参考: 当浏览器模式为IE9时,如何从JS中检测IE10?
更新:
为了避免评论的缩小,你可以使用像这样的东西:
var IE = (function () { "use strict"; var ret, isTheBrowser, actualVersion, jscriptMap, jscriptVersion; isTheBrowser = false; jscriptMap = { "5.5": "5.5", "5.6": "6", "5.7": "7", "5.8": "8", "9": "9", "10": "10" }; jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")(); if (jscriptVersion !== undefined) { isTheBrowser = true; actualVersion = jscriptMap[jscriptVersion]; } ret = { isTheBrowser: isTheBrowser, actualVersion: actualVersion }; return ret; }());
并访问像IE.isTheBrowser
和IE.actualVersion
(这是从JScript版本的内部值翻译)属性。
一般来说,用户代理嗅探和条件编译/注释的做法是最好的避免。 使用特征检测 , 优雅的降级和渐进式增强是更好的select。 但是,对于开发人员检测浏览器版本更方便的几个边缘情况,可以使用以下代码片段:
这个if
语句只能在IE 10上执行
// IF THE BROWSER IS INTERNET EXPLORER 10 if (navigator.appVersion.indexOf("MSIE 10") !== -1) { window.alert('This is IE 10'); }
这个if
语句只会在IE 11上执行
// IF THE BROWSER IS INTERNET EXPLORER 11 var UAString = navigator.userAgent; if (UAString.indexOf("Trident") !== -1 && UAString.indexOf("rv:11") !== -1) { window.alert('This is IE 11'); }
以下是获取当前IE或IE版本的方法:
function IE(v) { return RegExp('msie' + (!isNaN(v)?('\\s'+v):''), 'i').test(navigator.userAgent); }
以下是您可以如何使用它的方法:
if(IE()) alert('Internet Explorer!'); if(IE(10)) alert('Internet Explorer 10!');