IE и режим совместимости, почему он связывается со скриптами идентификации браузера? - PullRequest
1 голос
/ 09 января 2012

У меня есть скрипт ниже, который использует $_SERVER['HTTP_USER_AGENT'], потому что get_browser() не активен на сервере, и администратор указанного сервера (hotgator) не активирует его для меня.

При этом я запускаю IE 8 в Windows XP (тестовая машина для виртуальных машин), когда запускаю IE 8 в режиме совместимости. IE показывается в приведенном ниже сценарии как IE 7, а не IE 8. Почему?

<?php
//This is a script that will identify the OS and browser you are using.
// This also has a fix in where Chrome shows up as Chrome, 
// and not show up as Safari by accident. 



//Booleans to set OS and Browser to False.
$os = false;
$browser = false;
//Booleans for Web Browser & OS Functions.
$info = $_SERVER['HTTP_USER_AGENT'];
$xp = 'Windows NT 5.1';
$vista = 'Windows NT 6.0';
$win7 = 'Windows NT 6.1';
$ubuntu = 'Ubuntu';
$ie106 = 'ie106';
$ie10 = 'ie10';
$ie9 = 'ie9';
$ie8 = 'MSIE 8.0;';
$ie7b = 'MSIE 7.0b;';
$ie7 = 'MSIE 7.0;';
$chrome = '/Chrome/';
$safari = '/Safari/';
$firefox = '/Firefox/';


//Operating Systems
if (stristr($info, "Windows NT 5.1")) {echo 'You are using a Windows XP Operating System ';}
if (stristr($info, "Windows NT 6.0")) {echo 'You are using a Windows Vista Operating System ';}
if (stristr($info, "Windows NT 6.1")) {echo 'You are using a Windows 7 Operating System ';}
if (stristr($info, "Ubuntu")) {echo 'You are using an Ubuntu Operating System ';}
if (stristr($info, "Mac OS")) {echo 'You are using a Macintosh Operating System ';}


//Web Browsers
if (stristr($info, "Chrome") !== FALSE) {stristr($info,"Safari");
        $chrome = 'Chrome';
            echo 'with a Chrome Web Browser ';}
elseif (stristr($info, "Safari")) {echo 'with a Safari Web Browser ';}
if (stristr($info, "Firefox")) {echo 'with a Firefox Web Browser ';}
if (stristr($info, "MSIE 7.0;")) {echo 'with a Internet Explorer 7.0 Web Browser ';}
if (stristr($info, "MSIE 7.0b;")) {echo 'with a Internet Explorer 7.0b Web Browser ';}
if (stristr($info, "MSIE 8.0;")) {echo 'with a Internet Explorer 8.0 Web Browser ';}
if (stristr($info, "MSIE 9.0;")) {echo 'with a Internet Explorer 7.0 Web Browser ';}
if (stristr($info, "MSIE 10.0;")) {echo 'with a Internet Explorer 7.0 Web Browser ';}
if (stristr($info, "MSIE 10.6;")) {echo 'with a Internet Explorer 7.0 Web Browser ';}



//If OS or Browser not found in list.
if ($ubuntu || $xp || $vista || $win7)
$os = true;

if($firefox || $chrome || $safari || $ie9 || $ie8)
$browser = true;

if(!$browser || !$os){

echo'<strong>';
echo '<br />' . $_SERVER['HTTP_USER_AGENT'] . '<br />Please copy and paste the text above and send it to your web administrator. It will explain everything he/she needs to do.';}

?>

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Это связано с тем, что в режиме совместимости IE8 возвращается к рендерингу IE7, чтобы быть совместимым с сайтами, специально разработанными для более старого браузера. Поэтому он должен идентифицировать себя для веб-сервера как таковой, чтобы сайты возвращали правильное содержимое, если они предоставляют различное содержимое для разных версий веб-браузера.

Режим совместимости объяснен в блоге MSDN .

1 голос
/ 09 января 2012

Я считаю, что «режим совместимости» полностью эмулирует IE7, поэтому он так и называется. Почему - спросите MS.

...