如何获取浏览器“文档模式”

时间:2012-10-29 11:46:12

标签: javascript internet-explorer httpbrowsercapabilities

我正在开发某种JavaScript库。我导致问题,我有一些具体问题: 浏览器:IE8 / IE9和文档模式:IE7 我找到了解决方案,但我不想在所有情况下都使用它,并且想要在我遇到上述情况时使用它。我知道我可以使用以下方式识别浏览器:

return navigator.userAgent.toLowerCase().indexOf('MSIE 8') > -1;

但我只是以这种方式识别浏览器版本而不是文档模式,我不想使用我的解决方案,例如浏览器模式IE8和文档模式IE 8。 有没有办法在IE中获取页面文档模式?提前谢谢。

2 个答案:

答案 0 :(得分:29)

您可以使用document.documentMode准确返回IE正在使用的文档模式。

这意味着如果您将浏览器模式设置为IE9,但是您的文档模式设置为IE8,它将返回document.documentMode == 8(而userAgent字符串仍将显示为IE9)。如果您的JS包含样式更改,这将特别有用,因为它是确定IE呈现页面的方式的文档模式,而不是浏览器模式。兼容模式实际上只是改变了文档模式(通常是IE7)。

在少数情况下,我需要使用这样的东西来区分IE:

if (document.documentMode == 7) {
    doSomethingIn.IE7_only;
} else {
    doSomething.everwhereElse;
}

希望有所帮助。

答案 1 :(得分:1)

我不知道如何检索文档模式 1 ,但以更基本的方式解决问题可能是明智之举。假设您想在脚本中使用document.querySelector。这将在IE8 /文档模式IE7标准中失败。因此,对document.querySelector本身存在的额外检查将是解决方案:

return ~navigator.userAgent.toLowerCase().indexOf('MSIE 8') 
       && document.querySelector; //=> IE8 and Docmode IE7 => false

1 找到了检查文档模式的方法:使用document.documentMode。它返回一个整数(文档模式IE7标准为7),Quirks mode为5。对于非IE浏览器,它将是undefined