Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Is it possible to detect that IE is in compatibility mode from the useragent with PHP?

I use IE10 and have the useragent

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

So it appears as Internet Explorer 7 then.

Sure, It would be a bad idea to rely on only such a detection by PHP, but it is very useful for some ocasions (for example logging with PHP or debugging-hints,...)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
17.6k views
Welcome To Ask or Share your Answers For Others

1 Answer

From this resource: http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx

To detect IE 10 in compatibility mode rather than a regular IE 7 you should look at the token Trident/6.0 which identifies IE 10 regardless of the mode.

To detect it from PHP, grab the user agent from the headers and parse it for the Trident/6.0 string token.

You can recognize more versions of Internet Explorer from the Trident token: IE9 has Trident/5.0, IE 8 has Trident/4.0, IE 7 has no Trident in it's user agent.

The user agent string can be found at $_SERVER['HTTP_USER_AGENT']. From there it's trivial as to search a substring inside or with a regex.

IE10 User agent reference:

  • normal mode: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
  • compatibility mode: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0)

Note that the MSIE token is different but the Trident token is the same. This is the indication that the user has compatibility mode enabled.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...