Saya perlu beberapa fungsi mengembalikan nilai boolean untuk memeriksa apakah browser itu Chrome .
Bagaimana cara membuat fungsi seperti itu?
Saya perlu beberapa fungsi mengembalikan nilai boolean untuk memeriksa apakah browser itu Chrome .
Bagaimana cara membuat fungsi seperti itu?
Jawaban:
Pembaruan: Silakan lihat jawaban Jonathan untuk cara yang diperbarui untuk menangani ini. Jawaban di bawah mungkin masih berfungsi, tetapi kemungkinan dapat memicu beberapa kesalahan positif di browser lain.
Namun, seperti yang disebutkan, Agen Pengguna dapat dipalsukan sehingga selalu terbaik untuk menggunakan pendeteksian fitur (mis. Modernizer ) saat menangani masalah ini, sebagaimana disebutkan oleh jawaban lain.
sumber
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
kenavigator.vendor
, jadi metode ini bukan antipeluru, sesuatu seperti/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
mungkin akan bekerja lebih baikUntuk memeriksa apakah browser adalah Google Chrome , coba ini:
Contoh penggunaan: http://codepen.io/jonathan/pen/WpQELR
Alasan ini berhasil adalah karena jika Anda menggunakan inspektur Google Chrome dan pergi ke tab konsol. Ketik 'jendela' dan tekan enter. Kemudian Anda dapat melihat properti DOM untuk 'objek jendela'. Saat Anda menutup objek, Anda dapat melihat semua properti, termasuk properti 'chrome'.
Anda tidak dapat menggunakan benar-benar sama dengan benar lagi untuk memeriksa di IE
window.chrome
. IE digunakan untuk kembaliundefined
, sekarang kembalitrue
. Tapi coba tebak, IE11 sekarang kembali tidak terdefinisi lagi. IE11 juga mengembalikan string kosong""
untukwindow.navigator.vendor
.Saya harap ini membantu!
MEMPERBARUI:
Terima kasih kepada Halcyon991 karena telah menunjukkan di bawah ini, bahwa Opera 18+ yang baru juga menghasilkan true
window.chrome
. Sepertinya Opera 18 didasarkan pada Chromium 31 . Jadi saya menambahkan cek untuk memastikanwindow.navigator.vendor
is:"Google Inc"
and not is"Opera Software ASA"
. Juga terima kasih kepada Ring dan Adrien Be untuk informasi terbaru tentang Chrome 33 yang tidak kembali benar lagi ...window.chrome
sekarang periksa apakah tidak nol. Tapi perhatikan IE11, saya menambahkan cek kembaliundefined
karena IE11 sekarang mengeluarkanundefined
, seperti yang dilakukan ketika pertama kali dirilis .. kemudian setelah beberapa pembaruan membangun di- output ketrue
.. sekarang pembaruan yang baru dibangun menghasilkanundefined
lagi. Microsoft tidak bisa mengatasinya!PEMBARUAN 7/24/2015 - tambahan untuk pemeriksaan Opera
Opera 30 baru saja dirilis. Tidak ada lagi keluaran
window.opera
. Dan jugawindow.chrome
keluaran true di Opera 30 yang baru. Jadi Anda harus memeriksa apakah OPR ada di UserAgent . Saya memperbarui kondisi saya di atas untuk memperhitungkan perubahan baru di Opera 30 ini, karena ia menggunakan mesin render yang sama seperti Google Chrome.UPDATE 10/13/2015 - tambahan untuk pemeriksaan IE
Ditambahkan memeriksa untuk IE Edge karena itu keluaran
true
untukwindow.chrome
.. meskipun keluaran IE11undefined
untukwindow.chrome
. Terima kasih kepada artfulhacker yang telah memberi tahu kami tentang ini!UPDATE 2/5/2016 - tambahan untuk pemeriksaan iOS Chrome
Menambahkan cek untuk iOS Chrome cek
CriOS
karena itu mengeluarkantrue
untuk Chrome di iOS. Terima kasih kepada xinthose yang telah memberi tahu kami tentang ini!PEMBARUAN 4/18/2018 - ubah untuk pemeriksaan Opera
Diedit memeriksa untuk Opera, memeriksa
window.opr
tidakundefined
sejak sekarang Chrome 66 adaOPR
diwindow.navigator.vendor
. Terima kasih kepada Frosty Z dan Daniel Wallman karena melaporkan ini!sumber
Mozilla/5.0 (Linux; Android 8.0.0; ASUS_Z012D Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36
, karenanyaisChrome()
mengembalikan false .window.opr
tidakundefined
.bahkan lebih pendek:
var is_chrome = /chrome/i.test( navigator.userAgent );
sumber
true
di Microsoft Edge.Solusi yang jauh lebih sederhana adalah dengan menggunakan:
The
!!
hanya mengubah objek untuk nilai boolean. Di browser non-Chrome, properti ini adalahundefined
, yang tidak benar.Perhatikan ini juga mengembalikan true untuk versi Edge yang didasarkan pada Chrome (terima kasih @Carrm untuk menunjukkan ini).
sumber
true
kewindow.chrome
. Lihat conditionizr.com yang memiliki deteksi + perbaikan antipeluru.!!
konversi menjadi salah satutrue
ataufalse
.typeof(window.chrome)
memberi"object"
, sedangkantypeof(!!window.chrome)
memberi"boolean"
. Sampel kode Anda juga berfungsi juga karenaif
pernyataan melakukan konversi.true
untuk Edge.sumber
sumber
true
di Microsoft Edge.Anda mungkin juga menginginkan versi spesifik Chrome:
Permintaan maaf kepada The Big Lebowski karena menggunakan jawabannya di dalam jawabanku.
sumber
"537.36"
di Microsoft Edge.Kamu bisa memakai:
Ini bekerja pada v.71
sumber
navigator.userAgent.includes("Chrome")
Bekerja untuk saya di Chrome di Mac. Tampaknya atau lebih sederhana atau lebih dapat diandalkan (jika string userAgent diuji) daripada semua yang di atas.
sumber
const isChrome = window.chrome && !window.opr;
Pengguna dapat mengubah agen pengguna. Coba pengujian untuk
webkit
properti awalan distyle
objekbody
elemensumber
Lihat ini: Bagaimana mendeteksi browser Safari, Chrome, IE, Firefox dan Opera?
Dalam kasus Anda: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
sumber
Untuk mengetahui nama-nama browser desktop yang berbeda (Firefox, IE, Opera, Edge, Chrome). Kecuali Safari.
Bekerja di versi browser berikut:
Lihat intinya di sini dan biola di sini
Cuplikan kode asli tidak lagi berfungsi untuk Chrome dan saya lupa di mana saya menemukannya. Itu memiliki safari sebelumnya, tetapi saya tidak lagi memiliki akses ke safari jadi saya tidak dapat memverifikasi lagi.
Hanya kode Firefox dan IE yang merupakan bagian dari cuplikan asli.
Pemeriksaan untuk Opera, Edge, dan Chrome benar. Mereka memiliki perbedaan dalam UserAgent.
OPR
hanya ada di Opera.Edge
hanya ada di Edge. Jadi untuk memeriksa Chrome, string ini seharusnya tidak ada.Sedangkan untuk Firefox dan IE, saya tidak bisa menjelaskan apa yang mereka lakukan.
Saya akan menambahkan fungsi ini ke paket yang saya tulis
sumber
semua jawaban salah. "Opera" dan "Chrome" sama dalam semua kasus.
(bagian yang diedit)
inilah jawaban yang tepat
sumber
window.chrome.webstore
sekarangundefined