Détection des capacités
La possibilité de détecter un navigateur spécifique avant d'écrire du code. Par exemple, un script peut avoir à détecter l'existence d'un acompte pour une fonction avant de l'appeler. Cette méthode de détection lime les développeurs de considérer des types et des versions de navigateur spécifiques, ce qui leur permet de se concentrer sur la question de savoir si les capacités correspondantes existent. La détection des capacités ne peut pas détecter avec précision les navigateurs et versions spécifiques.
Détection de bizarrerie
Les bizarreries sont en fait des bogues dans les implémentations du navigateur. Par exemple, il y avait une bizarrerie dans les premiers webkits, c'est-à-dire qu'il rendrait les attributs cachés dans la boucle for-in. La détection de bizarrerie implique généralement l'exécution d'un morceau de code, puis de déterminer si un navigateur a une bizarrerie. Parce que la détection de bizarrerie ne peut pas détecter avec précision les navigateurs et versions spécifiques.
Détection d'agent utilisateur
Identifiez le navigateur en détectant la chaîne de l'agent utilisateur. La chaîne d'agent utilisateur contient une grande quantité d'informations liées au navigateur, y compris le navigateur, la plate-forme, le système d'exploitation et la version du navigateur. Les chaînes d'agent utilisateur ont un historique de développement considérable. Au cours de cette période, la vue du fournisseur de navigateur ajoute toujours des informations trompeuses à la chaîne de l'agent utilisateur et trompe le site Web dans le détail de son propre navigateur est un autre navigateur. La détection des agents utilisateur nécessite des compétences spéciales, en particulier, sachez que l'opéra cache ses chaînes d'agent utilisateur. Malgré cela, le moteur de rendu utilisé par le navigateur et la plate-forme utilisée par l'appareil mobile et le système de jeu peuvent toujours être détectés via la chaîne de l'agent utilisateur.
Au cours de chaque demande HTTP, la chaîne d'agent utilisateur est envoyée sous forme d'en-tête de réponse et la chaîne est accessible via la propriété Navigator.UserAgent de JavaScript. Du côté du serveur, c'est une pratique courante et largement acceptée pour déterminer le navigateur utilisé en détectant la chaîne de l'agent utilisateur. Côté client, la détection des agents utilisateur est généralement considérée comme un dernier recours, avec la priorité après la détection des capacités et la détection de bizarrerie.
var client = function () {// Rendre le moteur var moteur = {ie: 0, gecko: 0, webkit: 0, khtml: 0, opéra: 0, // numéro de version complète ver: null}; // Browser Var Browser = {// Browser principal IE: 0, Firefox: 0, Safari: 0, Konq: 0, Opera: 0, Chrome: 0, // Numéro de version spécifique ver: null}; // détecter le moteur de rendu et le navigateur var ua = Navigator.UserAgent; if (window.opera) {moteur.ver = Browser.ver = window.opera.version (); moteur.opera = Browser.Opera = paSefloat (moteur.ver); } else if (/AppleWebkit//(/s+)/.test(ua)) {moteur.ver = regexp ["1 $"]; moteur.webkit = parsefloat (moteur.ver); // Déterminez s'il s'agit de chrome ou de safari if (/chrome//(/s+)/.test(ua))) {Browser.ver = regexp ["$ 1"]; Browser.Chrome = paSefloat (moteur.ver); } else if (/version//(s+)/.test(ua)) {Browser.ver = regexp ["$ 1"]; Browser.Safari = paSefloat (Browser.ver); } else {// déterminer approximativement le numéro de version var safariversion = 1; if (moteur.webkit <100) {safariversion = 1; } else if (moteur.webkit <312) {safariversion = 1,2; } else if (moteur.webkit <412) {safariversion = 1,3; } else {safariversion = 2; } Browser.Safari = Browser.ver = Safariversion; }} else if (/khtml//(s+)/.test(ua) || /konqueror//(@^; moteur.khtml = Browser.kong = parsefloat (moteur.ver); } else if (/ rv: ([^ /)] +) /) gecko /// d {8} /. test (ua)) {moteur.ver = regexp ["$ 1"]; moteur.gecko = parsefloat (moteur.ver); // Déterminez s'il s'agit de firefox if (/firefox//(s+)/.test(ua)) {Browser.ver = regexp ["1 1"]; Browser.firefox = parsefloat (Browser.ver); }} else if (/ msie ([^;] +) /. test (ua)) {moteur.ver = Browser.ver = regexp ["1"]; moteur.ie = Browser.ie = paSefloat (moteur.ver); } // Détecter le navigateur de navigateur.ie = moteur.ie; Browser.Opera = moteur.Opera; // Renvoie ces objets return {moteur: moteur, navigateur: navigateur}} (); console.log (client.Engine); console.log (client.browser);Tangram détecte le code source du navigateur
/ ** * Déclarer le package baidu * / var baidu = baidu || {version: "1-3-2"}; // Meizz 20100513 Mettre à niveau GUID vers /x06baidu.guid = "$ baidu $"; // Proposer Guid pour empêcher la modification de la fenêtre [Undefined] 20100504 Berg / ** * Meizz 2010/02/04 * Le baidu de niveau supérieur est nécessaire d'informations uniques * / baid. fenêtre [baidu.guid] || {}; / ** * Déclare le package baidu.browser * / baidu.browser = baidu.browser || {}; / ** * Déterminez s'il est Isgecko * / baidu.browser.isgecko = /gecko/i.test(navigator.useragent) &&! / Comme gecko / i.test (navigator.useragent); / ** * /webkit/i.test(navigator.UserAgernt) ;/** * Déterminez s'il s'agit de mode standard * / baidu.browser.issstrict = document.compatMode == "CSS1Compat"; / ** * Déterminez s'il s'agit de Safari Browser * / si ((/(/d+/./d)(/./d)?/s+safari/i.test(navigator.useragent) &&! /chrome/i.test (Navigator.UserGent))) {baidu.browser.safari = parsefloat (regexp ['/ x241']);} / ** *. navigateur * / if (/opera//(/d+/./d)/i.test(navigator.UserAgentnt)) {baidu.browser.opera = parsefloat (regexp ['/ x241']);} / ** * (/chrome//(/d+/./d)/i.test(navigator.Userager)) {baidu.browser.chrome = parsefloat (regexp ['/ x241']);} / ** * déterminer s'il s'agit d'un navigateur IE * / if (/ msie)) {baidu.ie = baidu.browser.ie = document.DocumentMode || parsefloat (regexp ['/ x241']);} / ** * Déterminez s'il s'agit d'un navigateur Firefox * / if (/firefox//(/d+/./d)/i.test(navigator.useragent)) {baidu.browser.firefox = parsefloat (regexp ['/ x241']); // '/ x241' est la notation octale '/ x24' caractère correspondant '$', donc '/ x241' équivaut à '1 $'}