Detección de capacidades
La capacidad de detectar un navegador específico antes de escribir código. Por ejemplo, un script puede tener que detectar la existencia de un pago inicial para una función antes de llamarlo. Este método de detección impide que los desarrolladores consideren tipos y versiones específicos de navegadores, lo que les permite centrarse en si existen las capacidades correspondientes. La detección de capacidades no puede detectar con precisión navegadores y versiones específicos.
Detección de capricho
Las peculiaridades son en realidad errores en las implementaciones del navegador. Por ejemplo, había una peculiaridad en los primeros webkits, es decir, devolvería los atributos ocultos en el bucle for-in. La detección de Quirk generalmente implica ejecutar un código y luego determinar si un navegador tiene una peculiaridad. Porque la detección de Quirk no puede detectar con precisión navegadores y versiones específicos.
Detección de agentes de usuario
Identifique el navegador detectando la cadena del agente del usuario. La cadena del agente de usuario contiene una gran cantidad de información relacionada con el navegador, incluidos el navegador, la plataforma, el sistema operativo y la versión del navegador. Las cadenas de agentes de usuario tienen un historial de desarrollo considerable. Durante este período, la vista del proveedor del navegador siempre agrega información engañosa a la cadena del agente de usuario, y engaña al sitio web en detalle que su propio navegador es otro navegador. La detección de agentes de usuario requiere habilidades especiales, especialmente ten en cuenta que Opera oculta sus cadenas de agente de usuario. Aun así, el motor de representación utilizado por el navegador y la plataforma utilizada por el dispositivo móvil y el sistema de juego aún se pueden detectar a través de la cadena del agente de usuario.
Durante cada solicitud HTTP, la cadena del agente del usuario se envía como encabezado de respuesta, y se puede acceder a la cadena a través de la propiedad navegadora. Useragent de JavaScript. En el lado del servidor, es una práctica común y ampliamente aceptada para determinar el navegador utilizado al detectar la cadena del agente de usuario. En el lado del cliente, la detección de agentes de usuario generalmente se considera como un último recurso, con prioridad después de la detección de capacidades y la detección de Quirk.
var client = function () {// Rendering Engine var motor = {es decir: 0, gecko: 0, webkit: 0, khtml: 0, ópera: 0, // número de versión completo ver: null}; // navegador var navegue = {// navegador principal es decir: 0, firefox: 0, safari: 0, konq: 0, ópera: 0, Chrome: 0, // número de versión específico ver: null}; // detectar el motor de representación y el navegador var ua = navigator.useragent; if (window.opera) {motor.ver = browser.ver = window.opera.version (); motor.opera = navegador.opera = parsefloat (motor.ver); } else if (/applewebkit//(/s+)/.test(ua)) {motor.ver = regexp ["$ 1"]; motor.webkit = parsefloat (motor.ver); // Determinar si es Chrome o Safari if (/chrome//(/s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; navegador.chrome = parsefloat (motor.ver); } else if (/version//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; navegador.safari = parsefloat (navegador.ver); } else {// Determinar aproximadamente el número de versión var safariversion = 1; if (motor.webkit <100) {safariversion = 1; } else if (motor.webkit <112) {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//([^ ;font>+)/.test(ua)) {motor.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); // Determine si es Firefox if (/firefox//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; navegador.firefox = parsefloat (navegador.ver); }} else if (/msie ([^;]+)/. test (ua)) {motor.ver = browser.ver = regexp ["$ 1"]; motor.ie = browser.ie = parsefloat (motor.ver); } // detectar navegador.ie = motor.ie; navegador.opera = motor.opora; // devuelve estos objetos return {motor: motor, navegador: navegador}} (); console.log (client.engine); console.log (client.browser);Tangram detecta el código fuente del navegador
/*** Declare el paquete Baidu*/var baidu = baidu || {Versión: "1-3-2"}; // Meizz 20100513 Actualice Guid a /x06baidu.guid = "$ Baidu $"; // Proponga Guid para evitar la modificación de la ventana [Undefined] 20100504 Berg/*** Meizz 2010/02/04* El dominio de nivel superior Baidu puede ser secuestrado por los cierres, y se requiere el siguiente objeto cuando se requiere la información única de la página. Ventana [Baidu.guid] || {};/*** Declare el paquete Baidu.Browser*/Baidu.Browser = Baidu.Browser || {};/** * Determine si isgecko */baidu.browser.isgecko = /gecko/i.test(navigator.useragent) &&!/Me gusta gecko/i.test (navigator.useragent);/** * Determine si es vegetal */baidu.browser.iswebkit = = /webkit/i.test(navigator.useragent) ;/*** Determine si es el modo estándar*/baidu.browser.isstrict = document.compatmode == "css1compat";/*** Determine si es navegador Safari*/if if ((/(/d+/./d)(/./d)?/s+safari/i.test(navigator.useragent) &&! /chrome/i.test (navigator.useragent))) {baidu.browser.safari = parsefloat (Regexp ['/x241']);} navegador*/if (//persa//(/d+/./d)/i.test(navigator.useragent)) {Baidu.browser.opera = parsefloat (regexp ['/x241']);}/***Determine si es un navegador Chrome*/if if (/chrome//(/d+/./d)/i.test(navigator.useragent)) {baidu.browser.chrome = parsefloat (regexp ['/x241']);}/*** Determinar si es un navegador IE*/if (/msie (/d+/./d)/i.test(navat. {baidu.ie = baidu.browser.ie = document.documentmode || parsefloat (regexp ['/x241']);}/*** Determine si es un navegador Firefox*/if (/firefox//(/d+/./d)/i.test(navigator.useragent)) {baidu.browser.firefox = parsefloat (regexp ['/x241']); // '/x241' es la notación octal '/x24' personaje correspondiente '$', por lo que '/x241' es equivalente a '$ 1'}