Deteksi kemampuan
Kemampuan untuk mendeteksi browser tertentu sebelum menulis kode. Misalnya, skrip mungkin harus mendeteksi keberadaan uang muka untuk suatu fungsi sebelum menyebutnya. Metode deteksi ini membebaskan pengembang dari mempertimbangkan jenis dan versi browser tertentu, memungkinkan mereka untuk fokus pada apakah ada kemampuan yang sesuai. Deteksi kemampuan tidak dapat secara akurat mendeteksi browser dan versi tertentu.
Deteksi Quirk
Keunikan sebenarnya adalah bug dalam implementasi browser. Misalnya, ada kekhasan di webkit awal, yaitu, itu akan mengembalikan atribut tersembunyi di loop for-in. Deteksi Quirk biasanya melibatkan menjalankan sepotong kode dan kemudian menentukan apakah browser memiliki kekhasan. Karena deteksi quirk tidak dapat secara akurat mendeteksi browser dan versi tertentu.
Deteksi Agen Pengguna
Identifikasi browser dengan mendeteksi string agen pengguna. String agen pengguna berisi sejumlah besar informasi terkait browser, termasuk browser, platform, sistem operasi dan versi browser. String agen pengguna memiliki riwayat pengembangan yang cukup besar. Selama periode ini, tampilan penyedia browser selalu menambahkan beberapa informasi menipu ke string agen pengguna, dan menipu situs web ke dalam detail browsernya sendiri adalah browser lain. Deteksi agen pengguna membutuhkan keterampilan khusus, terutama menyadari bahwa opera menyembunyikan string agen penggunanya. Meski begitu, mesin rendering yang digunakan oleh browser dan platform yang digunakan oleh perangkat seluler dan sistem game masih dapat dideteksi melalui string agen pengguna.
Selama setiap permintaan HTTP, string agen pengguna dikirim sebagai header respons, dan string dapat diakses melalui properti JavaScript Navigator. Di sisi server, ini adalah praktik yang umum dan diterima secara luas untuk menentukan browser yang digunakan dengan mendeteksi string agen pengguna. Di sisi klien, deteksi agen pengguna umumnya dianggap sebagai pilihan terakhir, dengan prioritas mengikuti deteksi kemampuan dan deteksi kekhasan.
var client = function () {// rendering engine var engine = {ie: 0, gecko: 0, webkit: 0, khtml: 0, opera: 0, // nomor versi lengkap ver: null}; // browser var browser = {// browser utama IE: 0, firefox: 0, safari: 0, Konq: 0, opera: 0, chrome: 0, // Nomor versi spesifik Ver: null}; // Mendeteksi mesin rendering dan browser var ua = navigator.useragent; if (window.opera) {engine.ver = browser.ver = window.opera.version (); engine.opera = browser.opera = parsefloat (engine.ver); } lain jika (/appleWebkit//(/s+)/.test(ua)) {engine.ver = regexp ["$ 1"]; engine.webkit = parsefloat (engine.ver); // Tentukan apakah itu chrome atau safari if (/chrome//(/s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; browser.chrome = parsefloat (engine.ver); } lain jika (/version//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; browser.safari = parsefloat (browser.ver); } else {// kira -kira menentukan nomor versi var safarivionion = 1; if (engine.webkit <100) {Safarivionion = 1; } else if (engine.webkit <312) {SafariviRion = 1.2; } else if (engine.webkit <412) {Safarivionion = 1.3; } else {Safarivionion = 2; } browser.safari = browser.ver = Safarivionion; }} lain jika (/khtml//(s+)/.test(ua) || /konqueror//($^;anjang+)/.test(ua)) {engine.ver = browser.ver = regexp ["$ 1"]; engine.khtml = browser.kong = parsefloat (engine.ver); } else if (/rv: ([^/)]+)/) tokek /// d {8}/. test (ua)) {engine.ver = regexp ["$ 1"]; engine.gecko = parsefloat (engine.ver); // Tentukan apakah itu firefox if (/firefox//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"]; browser.firefox = parsefloat (browser.ver); }} lain if (/msie ([^;]+)/. test (ua)) {engine.ver = browser.ver = regexp ["$ 1"]; engine.ie = browser.ie = parsefloat (engine.ver); } // Deteksi browser browser.ie = engine.ie; browser.opera = engine.opera; // kembalikan objek ini return {engine: engine, browser: browser}} (); console.log (client.engine); console.log (client.browser);Tangram mendeteksi kode sumber browser
/*** Deklarasikan paket Baidu*/var baidu = baidu || {Versi: "1-3-2"}; // Meizz 20100513 Panduan Peningkatan ke /x06baidu.guid = "$ baidu $"; // mengusulkan GUID untuk mencegah modifikasi jendela [tidak ditentukan] 20100504 Berg/*** Meizz 2010/02/04* Level Level Top Baidu mungkin dibajak oleh penutupan, dan objek berikut diperlukan ketika halaman-level level. window [baidu.guid] || {};/*** Deklarasi paket Baidu.browser*/baidu.browser = baidu.browser || {};/** * Tentukan apakah itu isgecko */baidu.browser.isgecko = /gecko/i.test(navigator.useragent) &&!/Suka Gecko/i.test (navigator.useragent);/** * Tentukan apakah itu waswebkit */baiduker. /webkit/i.testr ((/(/d+/./d)(/./d)?/s+safari/i.test(navigator.useragent) &&! /chrome/i.test (navigator.useragent)) {baidu.browser.safari = parsefloat (regExp ['/x241); Browser*/if (/Opera//(/d+/.d)/i.test(navigator.useragent)) {baidu.browser.opera = parsefloat (regexp ['/x241']);}/***Tentukan apakah itu browser chrome*/IF (/chrome//(/d+/./d)/i.test(navigator.useragent)) {baidu.browser.chrome = parsefloat (regexp ['/x241']);}/*** Tentukan apakah itu browser IE*/if (/if. {baidu.ie = baidu.browser.ie = document.documentmode || parsefloat (regexp ['/x241']);}/*** Tentukan apakah itu browser firefox*/if (/firefox//(/d+/./d)/i.test(navigator.useragent)) {baidu.browser.firefox = pack = pack = refloat = park = refloat = pack = pack = pack = park = pack = pack = pack = pack = pack = pack = pack = pack = pack = pack = pack = park PArsefloat = park pack = pack = pack = park = park = pack = park = pack = park pack = // '/x241' adalah notasi oktal '/x24' karakter yang sesuai '$', jadi '/x241' setara dengan '$ 1'}