2014-02-05 39 views
0

一个奇怪的问题:考虑到一个站点强制IE8与以下语句的兼容性,浏览器中的代码如何检测浏览器是否实际上是IE8而不是一些较新的版?请注意,我不在寻找功能可用性,但想给IE8特定的消息。IE8兼容性设置时,如何检测IE8与较新版本分离

<meta content='IE=8' http-equiv='X-UA-Compatible' /> 

有很多方法可用于检测IE8,但它们似乎只能与旧版本相比。像IE11这样的新版本在兼容模式下表现得像IE8一样,js和css检测IE8的方法看不到它们的区别。

我已经尝试过在StackOverflow和各种其他网站上列出的各种方法,但是当网站强制它们进入IE8兼容模式时,似乎无法从IE11中检测到IE8。请仅以完全适用于此确切案例的方式回答问题(不仅仅是建议什么可能有效 - 我已经尝试了其中的很多方法)。

+0

老实说,我不知道有*是*的方式。兼容模式的重点在于它们难以区分。 –

+0

你可能更适合使用X-UA兼容的''或header(最好)将浏览器强制为“本机”行为。如果您的网页适用于较新的浏览器,请覆盖浏览器设置。 – Pointy

+0

在IE中有'ScriptEngine'函数可用,请参阅[这个答案](http://stackoverflow.com/a/19570684/1169519)。 – Teemu

回答

0

读取特定的MSDN文档表明可以使用代理字符串中的“Trident”值,而不考虑兼容性设置。以下是不同版本IE的值。所以对于IE8来说,检查“Trident/4.0”似乎有效。详细信息:Understanding user-agent strings

Token   Description 
Trident/7.0 IE11 
Trident/6.0 Internet Explorer 10 
Trident/5.0 Internet Explorer 9 
Trident/4.0 Internet Explorer 8