Detecção de capacidade
A capacidade de detectar um navegador específico antes de escrever código. Por exemplo, um script pode ter que detectar a existência de um adiantamento para uma função antes de chamá -lo. Esse método de detecção libera os desenvolvedores de considerar tipos e versões específicos do navegador, permitindo que eles se concentrem se os recursos correspondentes existem. A detecção de capacidade não pode detectar com precisão os navegadores e versões específicos.
Detecção de peculiaridade
As peculiaridades são realmente bugs nas implementações do navegador. Por exemplo, houve uma peculiaridade nos primeiros webkits, ou seja, retornaria atributos ocultos no loop for-in. A detecção de peculiaridade geralmente envolve a execução de um pedaço de código e, em seguida, determinar se um navegador tem uma peculiaridade. Como a detecção de peculiaridade não pode detectar com precisão os navegadores e versões específicos.
Detecção do agente do usuário
Identifique o navegador detectando a sequência do agente do usuário. A sequência do agente do usuário contém uma grande quantidade de informações relacionadas ao navegador, incluindo o navegador, a plataforma, o sistema operacional e a versão do navegador. As cadeias de agentes do usuário têm um histórico de desenvolvimento considerável. Durante esse período, a visualização do provedor do navegador sempre adiciona algumas informações enganosas à sequência do agente do usuário e enganam o site em detalhes seu próprio navegador é outro navegador. A detecção do agente do usuário requer habilidades especiais, especialmente saiba que a ópera esconde suas seqüências de agentes do usuário. Mesmo assim, o mecanismo de renderização usado pelo navegador e a plataforma usada pelo dispositivo móvel e o sistema de jogos ainda podem ser detectados através da sequência do agente do usuário.
Durante cada solicitação HTTP, a sequência do agente do usuário é enviada como cabeçalho de resposta e a string pode ser acessada através da propriedade Navigator.UserAgent do JavaScript. No lado do servidor, é uma prática comum e amplamente aceita para determinar o navegador usado detectando a sequência do agente do usuário. No lado do cliente, a detecção do agente do usuário é geralmente considerada um último recurso, com prioridade após a detecção de capacidade e a detecção de peculiaridade.
var client = function () {// renderizando mecanismo var motor = {ie: 0, gecko: 0, webkit: 0, khtml: 0, ópera: 0, // número de versão completa ver: null}; // navegador var navegador = {// navegador principal isto é: 0, Firefox: 0, Safari: 0, Konq: 0, Opera: 0, Chrome: 0, // Número da versão específico Ver: null}; // Detecte o motor de renderização e o navegador var ua = navegator.UserAgent; if (window.opera) {Engine.ver = navegador.ver = window.opera.version (); motor.opera = navegador.opera = parsefloat (Engine.ver); } else if (/applewebkit//(/s+)/.test(ua)) {Engine.ver = regexp ["$ 1"]; Engine.Webkit = parsefloat (mecanismo); // determinar se é Chrome ou Safari se (/chrome//(/s+)/.test(ua)) {Browser.ver = regexp ["$ 1"]; navegador.chrome = parsefloat (mecanismo); } else if (/version//(s+)/.test(ua)) {Browser.ver = regexp ["$ 1"]; navegador.safari = parsefloat (navegador.ver); } else {// determine aproximadamente o número da versão 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///turs mecany.khtml = navegador.kong = parsefloat (mecanismo.ver); } else if (/rv: ([^/)]+)/) gecko /// d {8}/. test (ua)) {Engine.ver = regexp ["$ 1"]; mecanismo.Gecko = parsefloat (Engine.ver); // determinar se é o Firefox if (/firefox//(s+)/.test(ua)) {Browser.ver = regexp ["$ 1"]; navegador.firefox = parsefloat (navegador.ver); }} else if (/msie ([^;]+)/. test (ua)) {mecany.ver = navegador.ver = regexp ["$ 1"]; motor.ie = Browser.ie = parsefloat (Engine.ver); } // detecta navegador navegador.ie = motor.ie; navegador.opera = motor.opera; // retorna esses objetos retornar {mecanismo: mecanismo, navegador: navegador}} (); console.log (client.engine); console.log (client.browser);Tangram detecta o código -fonte do navegador
/*** Declare o pacote Baidu*/var Baidu = Baidu || {versão: "1-3-2"}; // meizz 20100513 Upgrade guid to /x06baidu.guid = "$BAIDU$";//Propose guid to prevent modification of window[undefined] 20100504 berg/** * meizz 2010/02/04 * The top-level domain baidu may be hijacked by closures, and the following object is required when page-level unique information is required*/window[baidu.guid] = Janela [Baidu.guid] || {};/*** Declare Baidu.Browser Package*/Baidu.Browser = Baidu.Browser || {};/** * Determine se IsGecko */Baidu.browser.isgecko = /gecko/i.test(navigator.userAgent) &&!/GECKO/i.Test (Navigator.UserAgent);/** * Determine se é /webkit/i.test(navigator.userAgent); ((/(/d+/./d)(/./d)? Navegador*/if (/opera//(/d+/./d)/i.test(navigator.UserAgent)) {Baidu.browser.opera = parsefloat (regexp ['/x241']);}/*** (/chrome//(/d+/./d)/i.test(navigator.UserAgent)) {Baidu.browser.chrome = parsefloat (regexp ['/x241']);}/** ** Determine se um Browser IE*/se (/msie (/msie (/); {Baidu.ie = Baidu.browser.ie = document.documentMode || parsefloat (regexp ['/x241']);}/*** Determine se é um navegador do Firefox*/if (/firefox//(/d+/./d )/i.test(navigator.UserAgent)) {Baidu.browser.firefox = parsefloat (parsefloat.ugeGent) {Baidu.browser.firefox = parsefloat (parsexat) // '/x241' é a notação octal '/x24' caractere correspondente '$', então '/x241' é equivalente a '$ 1'}