2012-01-24 37 views
0

我正在尋找寫一個單一的,現代的和最新的JavaScript函數(或找到一個) - 大約2012年 - 這將可靠地檢測瀏覽器。 (僞代碼):JavaScript:檢測瀏覽器庫函數 - 是否存在?

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. */ 
    } 
} 

任何人都知道類似的東西?因爲我知道會有人問「你爲什麼要這樣做?」,我只是想要這樣一個功能,以便我可以在不同場景下構建它,比如加載基於瀏覽器的不同樣式表。

+5

對於一個現代和先進的 - 這樣做的方式我會建議調查[Modernizr](http://www.modernizr.com/);功能檢測而不是瀏覽器嗅探。 – jabclab

+0

確實。現在很少做瀏覽器檢測。您應該依靠功能檢測來代替。話雖如此,我認爲大多數瀏覽器檢測通常由用戶代理嗅探完成。 –

回答

2

如果你已經使用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
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); 
?> 
相關問題