Fähigkeitserkennung
Die Fähigkeit, einen bestimmten Browser vor dem Schreiben von Code zu erkennen. Beispielsweise muss ein Skript möglicherweise die Existenz einer Anzahlung für eine Funktion erkennen, bevor sie es aufrufen. Diese Erkennungsmethode befreit die Entwickler davon ab, bestimmte Browsertypen und -versionen zu berücksichtigen, sodass sie sich darauf konzentrieren, ob die entsprechenden Funktionen existieren. Die Erkennung von Fähigkeiten kann bestimmte Browser und Versionen nicht genau erkennen.
Quirk -Erkennung
Macken sind tatsächlich Fehler in Browser -Implementierungen. Zum Beispiel gab es in frühen Webkits eine Eigenart, dh es würde versteckte Attribute in der für die In-in-Schleife zurückgeben. In der Quirk -Erkennung wird normalerweise ein Stück Code ausgeführt und dann festgelegt, ob ein Browser eine Eigenart hat. Da die Quirk -Erkennung bestimmte Browser und Versionen nicht genau erkennen kann.
Erkennung von Benutzeragenten
Identifizieren Sie den Browser, indem Sie die Benutzeragentenzeichenfolge erkennen. Die Benutzeragentenzeichenfolge enthält eine große Menge an Browser-bezogenen Informationen, einschließlich Browser, Plattform, Betriebssystem und Browserversion. User Agent Saiten haben einen beträchtlichen Entwicklungsverlauf. In dieser Zeit fügt die Ansicht der Browseranbieter immer einige irreführende Informationen zum Benutzeragentenzeichenfolge hinzu und täuscht die Website in detaillierter Browser, ein weiterer Browser. Die Erkennung von Benutzeragenten erfordert besondere Fähigkeiten, insbesondere wissen Sie, dass Opera seine Benutzeragenten -Zeichenfolgen verbirgt. Trotzdem kann die vom Browser und die Plattform verwendete Rendering -Engine und die vom mobile Gerät und des Spielensystems verwendete Plattform weiterhin über die Benutzeragentenzeichenfolge erkannt werden.
Während jeder HTTP -Anforderung wird die Benutzeragentenzeichenfolge als Antwortheader gesendet, und auf die Zeichenfolge kann über die Eigenschaft von Navigator.Useragent von JavaScript zugegriffen werden. Auf der Serverseite ist es eine übliche und weit verbreitete Praxis, den Browser zu bestimmen, der durch Erkennen der Benutzeragentenzeichenfolge verwendet wird. Auf der Clientseite wird die Erkennung von Benutzeragenten im Allgemeinen als letztes Ausweg angesehen, wobei die Erkennung von Funktionen und die Erkennung von Quirk vorrangig ist.
var client = function () {// Rendering Engine var Engine = {IE: 0, Gecko: 0, Webkit: 0, khtml: 0, Opera: 0, // Vollversionsnummer ver: null}; // Browser var browser = {// Hauptbrowser, dh: 0, Firefox: 0, Safari: 0, Konq: 0, Opera: 0, Chrome: 0, // spezifische Versionsnummer ver: null}; // Rendering -Motor und Browser erkennen var ua = navigator.useragent; if (window.opera) {motor.ver = browser.ver = window.opera.version (); motor.opera = browser.opera = parsefloat (motor.ver); } else if (/AppleWebkit//(/s+)/.test(ua)) {Engine.ver = regexp ["$ 1"]; motor.webkit = parsefloat (motor.ver); // Bestimmen Sie, ob es Chrome oder Safari ist, wenn (/chrome//(/s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; browser.chrome = parsefloat (motor.ver); } else if (/version//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; browser.safari = parsefloat (browser.ver); } else {// Bestimmen Sie ungefähr die Versionsnummer var safariversion = 1; if (motor.webkit <100) {safariversion = 1; } else if (motor.webkit <312) {safariversion = 1,2; } else if (motor.webkit <412) {safariversion = 1,3; } else {safariversion = 2; } browser.safari = browser.ver = safariversion; }} else if (/khtml//(s+)/.test(ua) || /Konqueror//(…^; weibliche+)/.test(ua)) {Engine.ver = browser.ver = regexp ["$ 1"]; motor.khtml = browser.kong = parsefloat (motor.ver); } else if (/rv: ([^/)]+)/) Gecko /// d {8}/. test (ua)) {motor.ver = regexp ["$ 1"]; motor.gecko = parsefloat (motor.ver); // Bestimmen Sie, ob es Firefox ist, wenn (/firefox//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; browser.firefox = parsefloat (browser.ver); }} else if (/msie ([^;]+)/. test (ua)) {Engine.ver = browser.ver = regexp ["$ 1"]; motor.ie = browser.ie = parsefloat (motor.ver); } // Browser Browser.ie = Engine.ie; browser.opera = motor.opera; // diese Objekte zurückgeben {Engine: Engine, Browser: Browser}} (); console.log (Client.Engine); console.log (client.browser);Tangram erkennt den Browser -Quellcode
/*** deklariere Baidu Paket*/var baidu = baidu || {Version: "1-3-2"}; // MEIZZ 20100513 Upgrade GUID auf /x06Baidu.guid = "$ baidu $"; // Vorschläge zur Verhinderung der Änderung des Fensters [undefined] 20100504 Berg/*** meizz 2010/02/04* Die obere Domänen-Domänen-Domänen-Domänen. Fenster [Baidu.guid] || {};/*** deklariere Baidu.Browser Paket*/baidu.browser = baidu.browser || Oder /webkit/i.test(navigator.useragent);/*** Bestimmen Sie, ob es sich um Standardmodus handelt*/baidu.browser.isstrict = document.compatmode == "CSS1COMPAT";/*** Bestimmen Sie, ob es sich um Safari -Browser*/if handelt . Browser*/if (/opera//d+/./d)/i.test(navigator.useragent)) {baidu.browser.opera = parsefloat (regexp ['/x241']);}/***Bestimmen Sie, ob es sich um einen Chrom -Browser*/wenn handelt es sich um einen Chrom -Browser*/wenn . baidu.ie = baidu.browser.ie = document.documentMode || parsefloat (regexp ['/x241']);}/*** Bestimmen Sie, ob es sich um einen Firefox -Browser handelt. // '/x241' ist die Oktalnotation '/x24' korrespondierendes Zeichen '$', also entspricht '/x241' '$ 1'}