javascript - 使用 document.addEventListener 通过 JavaScript 检测 IE8

标签 javascript internet-explorer-8 conditional-operator browser-detection

我在我正在从事的一个项目中遇到了这段代码,用于检测浏览器是否为 IE8:

var isIE8 = function(){ return (!document.addEventListener) ? true : false; };

我不明白为什么条件运算符? true : false 用于如果 true 则返回 true,如果 false则返回 false。逻辑 NOT ! 应用于 document.addEventListener 的值,并且始终返回一个 bool 值,这不是做完​​全相同的事情吗:

var isIE8 = function(){ return (!document.addEventListener); };

.addEventListener Browser Compatibility

This Answer这是我能找到的最接近的信息。

感谢您的浏览:)

最佳答案

如果您只想检测 IE8,检查 addEventListener 即可完成此任务。但如果你想检查 IE 及其版本,我发现这种方法最直观、最有用:

var uA = navigator.userAgent;
var browser = null;
var ieVersion = null; 

if (uA.indexOf('MSIE 6') >= 0) {
    browser = 'IE';
    ieVersion = 6;
}
if (uA.indexOf('MSIE 7') >= 0) {
    browser = 'IE';
    ieVersion = 7;
}
if (document.documentMode) { // as of IE8
    browser = 'IE';
    ieVersion = document.documentMode;
}

您还可以通过这种方式在兼容模式/查看中捕获更高版本的 IE。使用该脚本非常简单:

if ((browser == 'IE') && (ieVersion <= 10)) 
    // do something, for example:
    document.documentElement.className += ' ie10-'; 

关于javascript - 使用 document.addEventListener 通过 JavaScript 检测 IE8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24017640/

相关文章:

perl - 在 Perl 的推送中使用条件运算符

javascript - 如何在 Javascript 三元运算符的输出中声明变量?

javascript - ajax 请求调用以错误结束

javascript - Cypress ,如果其他/切换案例不起作用

internet-explorer-8 - IE8 中的分层背景

html - Internet Explorer 8 忽略 'display: table-cell' 元素的宽度

c# - 在 Console.WriteLine 上使用三元运算符

javascript - 使用 knockout 突出显示所选行

javascript - 将构造函数中使用的函数移至该构造函数的原型(prototype)

jquery - IE8 切换错误?