Saya memiliki 5 addons / ekstensi untuk FF, Chrome, IE, Opera, dan Safari.
Bagaimana saya bisa mengenali browser pengguna dan mengarahkan ulang (setelah tombol instal telah diklik) untuk mengunduh addon yang sesuai?
javascript
browser-detection
FrankC
sumber
sumber
Jawaban:
Googling untuk deteksi yang andal pada peramban sering kali menghasilkan pengecekan string Agen pengguna. Metode ini tidak dapat diandalkan, karena sepele untuk menipu nilai ini.
Saya telah menulis metode untuk mendeteksi browser dengan mengetik bebek .
Hanya gunakan metode deteksi peramban jika memang benar-benar diperlukan, seperti memperlihatkan petunjuk khusus peramban untuk memasang ekstensi. Gunakan deteksi fitur bila memungkinkan.
Demo: https://jsfiddle.net/6spj1059/
Analisis keandalan
The metode sebelumnya tergantung pada sifat dari mesin rendering (
-moz-box-sizing
dan-webkit-transform
) untuk mendeteksi browser. Awalan ini pada akhirnya akan dihapus, sehingga untuk membuat deteksi lebih kuat, saya beralih ke karakteristik khusus peramban:document.documentMode
.StyleMedia
konstruktor. Mengecualikan Trident meninggalkan kita dengan Edge.InstallTrigger
chrome
Objek global , berisi beberapa properti termasukchrome.webstore
objek yang didokumentasikan .chrome.webstore
sudah usang dan tidak terdefinisi dalam versi terbaruSafariRemoteNotification
, yang diperkenalkan setelah versi 7.1, untuk mencakup semua Safaris dari 3.0 dan ke atas.window.opera
telah ada selama bertahun-tahun, tetapi akan dibatalkan ketika Opera mengganti mesinnya dengan Blink + V8 (digunakan oleh Chromium).chrome
objek didefinisikan (tetapichrome.webstore
tidak). Karena Opera berusaha keras untuk mengkloning Chrome, saya menggunakan sniffing agen pengguna untuk tujuan ini.!!window.opr && opr.addons
dapat digunakan untuk mendeteksi Opera 20+ (evergreen).CSS.supports()
diperkenalkan di Blink setelah Google mengaktifkan Chrome 28. Ini tentu saja, Blink yang sama digunakan di Opera.Berhasil diuji dalam:
sumber
window.chrome.webstore
yang tidak ditentukan di sana. Belum memeriksanya dengan Ekstensi Firefox.is.js
disebutkan di tempat lain tidak berfungsi di Chrome dan Firefox Extensions.isSafari
tidak bekerja dengan Safari 10. Saya akan berpendapat ini adalah solusi yang buruk (bukannya saya punya yang bagus). Tidak ada jaminan banyak hal yang Anda periksa tidak akan dihapus ATAU tidak akan ditambahkan oleh peramban lain. Setiap situs yang menggunakan kode ini untuk memeriksa Safari baru saja rusak dengan peningkatan MacOS Sierra atau Safari 10 :(isSafari
tidak berfungsi di<iframe>
bawah Safari 10.1.2Anda dapat mencoba cara berikut untuk memeriksa versi Browser.
Dan jika Anda hanya perlu mengetahui versi IE Browser maka Anda dapat mengikuti kode di bawah ini. Kode ini berfungsi dengan baik untuk versi IE6 ke IE11
sumber
chrome
kata kunci dalam agen pengguna. contoh agen pengguna safari -mozilla/5.0 (macintosh; intel mac os x 10_11_5) applewebkit/601.6.17 (khtml, like gecko) version/9.1.1 safari/601.6.17
if(navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR') != -1 )
Saya tahu mungkin terlalu banyak menggunakan lib untuk itu, tetapi hanya untuk memperkaya utas, Anda dapat memeriksa is.js cara melakukan ini:
sumber
is.js
dan periksa bagaimana mereka melakukannya.Berikut adalah beberapa perpustakaan terkemuka yang menangani deteksi peramban hingga Desember 2019.
Bowser oleh lancedikson - 4.065 ★ s - Terakhir diperbarui 2 Okt 2019 - 4.8KB
* mendukung Edge berdasarkan Chromium
Platform.js oleh bestiejs - 2.550 ★ s - Terakhir diperbarui 14 Apr 2019 - 5.9KB
jQuery Browser oleh gabceb - 504 ★ s - Terakhir diperbarui 23 Nov 2015 - 1.3KB
Detect.js (Diarsipkan) oleh darcyclarke - 522 ★ s - Terakhir diperbarui 26 Okt 2015 - 2.9KB
Deteksi Browser (Diarsipkan) oleh QuirksMode - Terakhir diperbarui 14 Nov 2013 - 884B
Sebutan Terkemuka:
Bacaan lebih lanjut
sumber
Jika ada yang menemukan ini berguna, saya telah membuat jawaban Rob W menjadi fungsi yang mengembalikan string browser daripada memiliki beberapa variabel yang mengambang. Karena browser juga tidak dapat benar-benar berubah tanpa memuat lagi, saya telah membuat cache hasil untuk mencegahnya perlu bekerja keluar saat fungsi berikutnya dipanggil.
sumber
window.chrome.webstore
dihapus di Chrome 71, jadi pendekatan ini tidak lagi berfungsi.Varian pendek
sumber
Inilah versi Rob yang disesuaikan pada 2016, termasuk Microsoft Edge dan deteksi Blink:
( sunting : Saya memperbarui jawaban Rob di atas dengan informasi ini.)
Keindahan dari pendekatan ini adalah bahwa ia bergantung pada properti mesin browser, sehingga mencakup bahkan browser turunan, seperti Yandex atau Vivaldi, yang secara praktis kompatibel dengan browser utama yang mesinnya mereka gunakan. Pengecualiannya adalah Opera, yang bergantung pada sniffing agen pengguna, tetapi hari ini (yaitu ver. 15 ke atas) bahkan Opera sendiri hanya merupakan shell untuk Blink.
sumber
!!window.MSAssertion;
tes tidak bekerja untuk saya dalam versi beta Ujung melalui Remote Desktop. Ini mengembalikan false.MSAssertion
Triknya disesuaikan ke versi 25. Tetapi karena banyak pengembang bergantung pada VM, saya akan mencoba menyesuaikannya dengan versi yang lebih lama ini. Panggilan yang bagus. Terima kasih.StyleMedia
(dikapitalisasi) objek khusus untuk IE dan Ujung dan tampaknya tidak akan terjadi di mana saja.Anda dapat menggunakan
try
dancatch
menggunakan berbagai pesan kesalahan browser. IE dan edge campur aduk, tetapi saya menggunakan pengetikan bebek dari Rob W (berdasarkan proyek ini di sini: https://www.khanacademy.org/computer-programming/i-have-opera/2395080328 ).sumber
Terima kasih semuanya. Saya menguji cuplikan kode di sini di browser terbaru: Chrome 55, Firefox 50, IE 11 dan Edge 38 dan saya datang dengan kombinasi berikut yang bekerja untuk saya untuk mereka semua. Saya yakin ini dapat ditingkatkan, tetapi ini adalah solusi cepat untuk siapa pun yang membutuhkan:
Itu menambah kelas CSS ke HTML, dengan nama browser.
sumber
Tidak tahu apakah ini berguna bagi siapa pun tetapi di sini ada varian untuk membuat TypeScript bahagia.
}
navigator.userAgent
memberi tahu Anda setiap browser yang Anda miliki .. Jadi ini benar-benar tidak dapat diandalkan, satu-satunya hal yang akan berhasil adalah jika pengguna hanya memiliki satu browser.Mendeteksi Peramban di Desktop dan Seluler: Edge, Opera, Chrome, Safari, Firefox, IE
Terima kasih @nimesh pengguna: 2063564
sumber
Ada juga metode "peretasan" yang kurang berfungsi untuk semua peramban populer. Google telah memasukkan pemeriksaan browser di Perpustakaan Penutupan mereka . Secara khusus, lihat
goog.userAgent
dangoog.userAgent.product
. Dengan cara ini, Anda juga terbarui jika ada perubahan dalam cara browser menampilkan diri (mengingat bahwa Anda selalu menjalankan versi terbaru dari kompilator penutupan.)sumber
Jika Anda perlu mengetahui versi numerik dari beberapa browser tertentu, Anda dapat menggunakan cuplikan berikut. Saat ini ia akan memberi tahu Anda versi Chrome / Chromium / Firefox:
sumber
UAParser adalah salah satu Perpustakaan JavaScript yang ringan untuk mengidentifikasi browser, mesin, OS, CPU, dan tipe / model perangkat dari string userAgent.
Ada CDN yang tersedia. Di sini, saya telah memasukkan contoh kode untuk mendeteksi browser menggunakan UAParser.
Sekarang Anda dapat menggunakan nilai
result.browser
untuk memprogram halaman Anda secara kondisional.Sumber Tutorial: Bagaimana cara mendeteksi browser, mesin, OS, CPU, dan perangkat menggunakan JavaScript?
sumber
sumber
Ini menggabungkan jawaban Rob asli dan pembaruan Pilau untuk 2016
sumber
Di sini Anda menemukan browser mana yang sedang berjalan.
sumber
Kita dapat menggunakan metode util di bawah ini
sumber
sumber
Sederhana, satu baris kode JavaScript akan memberi Anda nama browser:
sumber
navigator.userAgent
memberi tahu Anda setiap browser yang Anda miliki .. Jadi ini benar-benar tidak dapat diandalkan, satu-satunya hal yang akan berhasil adalah jika pengguna hanya memiliki satu browser.