機能検出
コードを書く前に特定のブラウザを検出する機能。たとえば、スクリプトは、それを呼び出す前に、関数に対する頭金の存在を検出する必要がある場合があります。この検出方法により、開発者は特定のブラウザの種類とバージョンを考慮しないようにし、対応する機能が存在するかどうかに集中できるようにします。機能検出は、特定のブラウザとバージョンを正確に検出できません。
癖の検出
実際には、ブラウザの実装のバグです。たとえば、初期のウェブキットには癖がありました。つまり、for-inループの隠された属性を返します。 Quirk検出では、通常、コードを実行してから、ブラウザにQuirkがあるかどうかを判断します。 Quirk検出は特定のブラウザとバージョンを正確に検出できないためです。
ユーザーエージェントの検出
ユーザーエージェント文字列を検出して、ブラウザを特定します。ユーザーエージェント文字列には、ブラウザ、プラットフォーム、オペレーティングシステム、ブラウザバージョンなど、大量のブラウザ関連情報が含まれています。ユーザーエージェントの文字列にはかなりの開発履歴があります。この期間中、ブラウザプロバイダービューは常にユーザーエージェントの文字列に欺cept的な情報を追加し、Webサイトを欺き、独自のブラウザが別のブラウザです。ユーザーエージェントの検出には、特別なスキルが必要です。特に、オペラがユーザーエージェントの文字列を隠していることに注意してください。それでも、ブラウザで使用されるレンダリングエンジンとモバイルデバイスとゲームシステムで使用されるプラットフォームは、ユーザーエージェントの文字列を介して検出できます。
各HTTPリクエスト中に、ユーザーエージェント文字列は応答ヘッダーとして送信され、文字列はjavascriptのnavigator.useragentプロパティからアクセスできます。サーバー側では、ユーザーエージェントの文字列を検出して使用されるブラウザを決定するのは、一般的で広く受け入れられているプラクティスです。クライアント側では、ユーザーエージェントの検出は一般に最後の手段と見なされ、フォロー機能検出とQuirk検出を優先します。
var client = function(){//レンダリングエンジンvarエンジン= {ie:0、gecko:0、webkit:0、khtml:0、opera:0、//フルバージョン番号Ver:null}; //ブラウザvar browser = {//メインブラウザーIE:0、firefox:0、safari:0、konq:0、opera:0、chrome:0、//特定のバージョン番号Ver:null}; //レンダリングエンジンとブラウザvar ua = navigator.useragentを検出します。 if(window.opera){Engine.ver = browser.ver = window.opera.version(); Engine.opera = browser.opera = parsefloat(Engine.ver); } else if(/applewebkit//(/s+)/.test(uua)){engine.ver = regexp ["$ 1"]; Engine.WebKit = parsefloat(Engine.ver); //それがChromeかSafariであるかを決定するif(/chrome///s+)/.test(ua)){browser.ver = regexp ["$ 1"]; browser.chrome = parsefloat(Engine.ver); } else if(/version//(s+)/.test(uua)){browser.ver = regexp ["$ 1"]; browser.safari = parsefloat(browser.ver); } else {//バージョン番号Var Safariversion = 1をほぼ決定します。 if(Engine.Webkit <100){Safariversion = 1; } else if(Engine.webkit <312){safariversion = 1.2; } else if(Engine.webkit <412){safariversion = 1.3; } else {safariversion = 2; } browser.safari = browser.ver = safariversion; }} else if(/khtml//(s+)/.test(ua)||/konqueror//( [^;]+)/.test(ua)){engine.ver = browser.ver = regexp ["$ 1"]; Engine.khtml = browser.kong = parsefloat(Engine.ver); } else if(/rv:([^/)]+)/)gecko /// d {8}/。test(ua)){engine.ver = regexp ["$ 1"]; Engine.gecko = parsefloat(Engine.ver); //それがFirefoxであるかどうかを判断します(/firefox//(s+)/.test(ua)){browser.ver = regexp ["$ 1"]; browser.firefox = parsefloat(browser.ver); }} else if(/msie([^;]+)/。test(ua)){engine.ver = browser.ver = regexp ["$ 1"]; Engine.ie = browser.ie = parsefloat(Engine.ver); } // browser browser.ie = engine.ieを検出します。 browser.opera = engine.opera; //これらのオブジェクトを返す{エンジン:エンジン、ブラウザー:ブラウザー}}(); console.log(client.engine); console.log(client.browser);Tangramはブラウザソースコードを検出します
/*** baiduパッケージを宣言*/var baidu = baidu || {バージョン: "1-3-2"}; // Meizz 20100513 Upgrade GUIDに/x06baidu.guid = "$ baidu $"; //ウィンドウの変更を防ぐためのガイドを提案します[未定義] 20100504 BERG/** * MEIZZ 2010/02/04必須*/window [baidu.guid] = window [baidu.guid] || {};/*** baidu.browserパッケージを宣言*/baidu.browser = baidu.browser || {};/** * Isgecko */baidu.browser.isgecko = /gecko/i.test(navigator.useragent)&&! /webkit/i.test(navigator.useragent);/***標準モードかどうかを決定*/baidu.browser.isstrict = document.compatmode == "css1compat";/*** safari browser*/ ((/(/d+/./d)(/./d/s/s+safari/i.test(navigator.useragent)&&!/chrome/i.test(navigator.useragent))){baidu.browser.safari = persefloat(regexp ['/x241'); browowser*/if(/opera////d+/./d/d/i.test(navigator.useragent)){baidu.browser.opera = parsefloat(regexp ['/x241']);}/***chrome browser*/*** (/chrome//d+/./d/i.test(navigator.useragent)){baidu.browser.chrome = parsefloat(regexp ['/x241']);}/***それがIE BROWSER*/IF(/MSID/./d. {baidu.ie = baidu.browser.ie = document.documentmode || parsefloat(regexp ['/x241']);}/***それがFirefoxブラウザであるかどうかを判断します*/if(/firefox//(/d+/./d/i.test(navigator.useragent)){baidu.browser.firefox = parefloat(regexp1 '); // '/x241'はoctal notation '/x24'対応する文字 '$'であるため、 '/x241'は「$ 1」に相当します}