使用 JavaScript 仅针对 IE11 的最不容易出错的方法是什么?
注意:这实际上应该仅用于分析或通知用户他们正在使用的浏览器。对于其他一切,都有特征检测。
使用 JavaScript 仅针对 IE11 的最不容易出错的方法是什么?
注意:这实际上应该仅用于分析或通知用户他们正在使用的浏览器。对于其他一切,都有特征检测。
IE 11 的用户代理字符串目前是这样的:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Windows 10 示例:
Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
这意味着您可以简单地测试 11.xx 版本,
var isIE11 = /Trident.*rv[ :]*11\./.test(navigator.userAgent);
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
可以肯定的是,现在Trident/X
应该是真正的版本控制。
IE11 在它的 UA 字符串中保留“Trident”,但丢弃 MSIE。检测浏览器是否为 IE11 或以上(IE12、IE13 等)的简单方法是:
var isAtLeastIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));
如果您只想要IE11(并且您不希望 IE 的未来版本匹配),请执行以下操作:
var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
var isIE11 = !!navigator.userAgent.match(/Trident\/7.0; rv 11/);
来源:http : //www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-call-me-ie/
这将设置ie
为 IE 的版本,如果没有,则设置为 0。它适用于 1 到 11,但如果 Microsoft 放弃 Trident 引擎,则可能无法检测到未来的版本。
var ie = 0;
try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; }
catch(e){}
您可能也有兴趣在我相关,更详细的答案在这里。
我使用以下模式来定位所有 IE 浏览器。如果您只需要 IE 11,则可以将其缩短。
/msie|trident|edge/g.test(navigator.userAgent.toLowerCase());
祝你好运!
弗雷德里克