Detect IE compatibility-mode with only PHP

后端 未结 2 511
猫巷女王i
猫巷女王i 2020-12-22 01:15

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         


        
2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-22 01:59

    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.

提交回复
热议问题