Miq*_*Ali 107 javascript internet-explorer internet-explorer-11
我知道IE 11具有与所有其他IE不同的用户代理字符串
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)
我试图用这个问题的答案检测IE 11'
那是 !!navigator.userAgent.match(/Trident\/7\./)
但我收到了错误
Object not found and needs to be re-evaluated.
然后我在IE11中打开开发者控制台并尝试访问一些预定义的javascript对象,我仍然得到相同的错误.
我试过了
navigator.userAgent
window.navigator
console.log('test');
有人对此有任何想法吗?
Roy*_*mir 165
2016年11月18日编辑
此代码也适用(对于那些喜欢其他解决方案而不使用ActiveX的人)
var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
// true on IE11
// false on Edge and other IEs/browsers.
Run Code Online (Sandbox Code Playgroud)
原始答案
为了检查Ie11,您可以使用:(已测试)
(或运行此)
!(window.ActiveXObject) && "ActiveXObject" in window
我有IE的所有VMS:




注意:这不适用于IE11:
正如你在这里看到的,它返回true:

所以,我们能做些什么 :
显然,他们添加了机器位空间:
ie11:
"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"
Run Code Online (Sandbox Code Playgroud)
ie12:
"Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"
Run Code Online (Sandbox Code Playgroud)
所以我们可以这样做:
/x64|x32/ig.test(window.navigator.userAgent)
Run Code Online (Sandbox Code Playgroud)
这将仅对ie11返回true.
Epo*_*okK 95
要快速检测MSIE(从版本6到11):
if(navigator.userAgent.indexOf('MSIE')!==-1
|| navigator.appVersion.indexOf('Trident/') > -1){
/* Microsoft Internet Explorer detected in. */
}
Run Code Online (Sandbox Code Playgroud)
com*_*ike 21
所有上述答案都忽略了你提到你没有窗口或导航器的事实:-)
然后我在IE11中打开开发者控制台
这就是它所说的
找不到对象,需要重新评估.
和导航器,窗口,控制台,它们都不存在,需要重新评估.我在仿真中有这个.关闭并打开控制台几次.
Ken*_*nyE 20
我使用以下函数来检测IE的版本9,10和11:
function ieVersion() {
var ua = window.navigator.userAgent;
if (ua.indexOf("Trident/7.0") > -1)
return 11;
else if (ua.indexOf("Trident/6.0") > -1)
return 10;
else if (ua.indexOf("Trident/5.0") > -1)
return 9;
else
return 0; // not IE9, 10 or 11
}
Run Code Online (Sandbox Code Playgroud)
j.j*_*.j. 16
仅检测IE 11 的一种非常安全且简洁的方法是
if(window.msCrypto) {
// I'm IE11 for sure
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西
var IE11= !!window.msCrypto;
Run Code Online (Sandbox Code Playgroud)
msCrypto是window.crypto对象的前缀版本,仅在 IE 11 中实现。
https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto
好的试试这个,简单,适用于 IE11 和 11 版本以下的 IE
browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;
Run Code Online (Sandbox Code Playgroud)
navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1IE 11 版本 IE 11
navigator.userAgent.toUpperCase().indexOf("MSIE") != -1以下版本
browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;
Run Code Online (Sandbox Code Playgroud)
我是如何实现这一点的
<script type="text/javascript">
!(window.ActiveXObject) && "ActiveXObject"
function isIE11(){
return !!navigator.userAgent.match(/Trident.*rv[ :]*11\./);
}
</script>
Run Code Online (Sandbox Code Playgroud)