JavaScript: обнаружение функции библиотеки браузера - существует ли она? - PullRequest
0 голосов
/ 24 января 2012

Я ищу написать единственную, современную и современную функцию JavaScript (или найти ее) - около 2012 года - которая будет надежно определять браузеры. Что-то вроде (псевдокод):

function detectBrowser(){
    if IE{
        /* code to detect IE version / quirks mode */
        return an object containing IE version and boolean for quirks mode?
    }
    else if WebKit{
        /* same thing. return browser */
    }
    else if Gecko{
        /* same thing. */
    }
}

Кто-нибудь знает что-то подобное? Поскольку я знаю, что будут люди, спрашивающие «почему вы хотите это сделать?», Я просто хочу такую ​​функцию, чтобы я мог встроить ее в различные сценарии, такие как загрузка разных таблиц стилей на основе браузера.

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Если у вас есть возможность использовать jQuery, есть jQuery.browser, однако это устарело, и они рекомендуют использовать jQuery.support, который имеет целый ряд свойств, которые сообщают вам, что браузер делает или не поддерживает , Смотри: http://api.jquery.com/jQuery.support/

Для примера рендеринга таблицы стилей вам даже не нужно использовать скрипт, вы можете достичь его внутри HTML, используя такие выражения, как:

<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
0 голосов
/ 10 марта 2014
enter code here

<?php
function getBrowser() 
{ 
$u_agent = $_SERVER['HTTP_USER_AGENT']; 
$bname = 'Unknown';
$platform = 'Unknown';
$version= "";

//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
    $platform = 'linux';
}
elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
    $platform = 'mac';
}
elseif (preg_match('/windows|win32/i', $u_agent)) {
    $platform = 'windows';
}

// Next get the name of the useragent yes seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
{ 
    $bname = 'Internet Explorer'; 
    $ub = "MSIE"; 
} 
elseif(preg_match('/Firefox/i',$u_agent)) 
{ 
    $bname = 'Mozilla Firefox'; 
    $ub = "Firefox"; 
} 
elseif(preg_match('/Chrome/i',$u_agent)) 
{ 
    $bname = 'Google Chrome'; 
    $ub = "Chrome"; 
} 
elseif(preg_match('/Safari/i',$u_agent)) 
{ 
    $bname = 'Apple Safari'; 
    $ub = "Safari"; 
} 
elseif(preg_match('/Opera/i',$u_agent)) 
{ 
    $bname = 'Opera'; 
    $ub = "Opera"; 
} 
elseif(preg_match('/Netscape/i',$u_agent)) 
{ 
    $bname = 'Netscape'; 
    $ub = "Netscape"; 
} 

// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
    // we have no matching number just continue
}

// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
    //we will have two since we are not using 'other' argument yet
    //see if version is before or after the name
    if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
        $version= $matches['version'][0];
    }
    else {
        $version= $matches['version'][1];
    }
}
else {
    $version= $matches['version'][0];
}

// check if we have a number
if ($version==null || $version=="") {$version="?";}

return array(
    'userAgent' => $u_agent,
    'name'      => $bname,
    'version'   => $version,
    'platform'  => $platform,
    'pattern'    => $pattern
);
} 

// now try it
$ua=getBrowser();
echo $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on "     .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
//print_r($yourbrowser);
?>
0 голосов
/ 24 января 2012

Посмотрите на jQuery.browser

...