我正在开发某种JavaScript库。我导致问题,我有一些具体问题: 浏览器:IE8 / IE9和文档模式:IE7 我找到了解决方案,但我不想在所有情况下都使用它,并且想要在我遇到上述情况时使用它。我知道我可以使用以下方式识别浏览器:
return navigator.userAgent.toLowerCase().indexOf('MSIE 8') > -1;
但我只是以这种方式识别浏览器版本而不是文档模式,我不想使用我的解决方案,例如浏览器模式IE8和文档模式IE 8。 有没有办法在IE中获取页面文档模式?提前谢谢。
答案 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
。