2012-01-24 3 views
0

私は、信頼できるブラウザを検出する、2012年頃の単一の最新の最新のJavaScript関数(またはその1つを見つける)を書くつもりです。 (擬似コード)の行に沿ったもの: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

確かに。今日はブラウザの検出を行うのが嫌です。代わりに機能の検出に頼るべきです。つまり、ほとんどのブラウザの検出は、通常、ユーザーエージェントの盗聴によって行われると思います。 –

答えて

0

が、あなたはjQueryのを使用するオプションを持っている場合、jQuery.browserがあるjQuery.browser

2

を見てくださいしかし、これは推奨されていません、彼らは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); 
?> 
関連する問題