Mam 5 dodatków / rozszerzeń dla FF, Chrome, IE, Opera i Safari.
Jak rozpoznać przeglądarkę użytkownika i przekierować (po kliknięciu przycisku instalacji), aby pobrać odpowiedni dodatek?
javascript
browser-detection
FrankC
źródło
źródło
Odpowiedzi:
Googling w celu niezawodnego wykrywania przeglądarki często powoduje sprawdzenie ciągu agenta użytkownika. Ta metoda nie jest niezawodna, ponieważ fałszowanie tej wartości jest banalne.
Napisałem metodę wykrywania przeglądarek przez pisanie kaczek .
Używaj metody wykrywania przeglądarki tylko wtedy, gdy jest to naprawdę konieczne, na przykład wyświetlając instrukcje dotyczące przeglądarki dotyczące instalacji rozszerzenia. W miarę możliwości korzystaj z funkcji wykrywania.
Demo: https://jsfiddle.net/6spj1059/
Analiza niezawodności
Poprzednia metoda zależy od właściwości silnika renderowania (
-moz-box-sizing
i-webkit-transform
) w celu wykrycia przeglądarki. Te prefiksy zostaną ostatecznie usunięte, więc aby uczynić wykrywanie jeszcze bardziej niezawodnym, przełączyłem się na cechy charakterystyczne dla przeglądarki:document.documentMode
.StyleMedia
konstruktora. Wyłączenie Trident pozostawia nam Edge.InstallTrigger
chrome
obiekt globalny zawierający kilka właściwości, w tymchrome.webstore
obiekt udokumentowany .chrome.webstore
jest przestarzała i niezdefiniowana w najnowszych wersjachSafariRemoteNotification
, co zostało wprowadzone po wersji 7.1, aby objąć wszystkie Safari od wersji 3.0 i wyższych.window.opera
istnieje od lat, ale zostanie porzucona, gdy Opera zastąpi swój silnik Blink + V8 (używany przez Chromium).chrome
obiekt jest zdefiniowany (alechrome.webstore
nie jest). Ponieważ Opera próbuje sklonować Chrome, do tego celu używam wąchania agenta użytkownika.!!window.opr && opr.addons
może być używana do wykrywania Opery 20+ (evergreen).CSS.supports()
został wprowadzony w Blink, gdy Google włączył Chrome 28. Jest to oczywiście ten sam Blink, który był używany w Operze.Z powodzeniem przetestowany w:
źródło
window.chrome.webstore
jest tam zdefiniowane. Nie sprawdziłem tego z rozszerzeniami Firefox.is.js
wspomniany gdzie indziej działa zarówno w rozszerzeniach Chrome, jak i Firefox.isSafari
nie działa z Safari 10. Będę argumentować, że to złe rozwiązanie (nie że mam dobre). Nie ma gwarancji, że wiele rzeczy, które sprawdzasz, nie zostanie usuniętych LUB nie zostaną dodane przez inne przeglądarki. Każda witryna, która używała tego kodu do sprawdzania Safari, po prostu zepsuła się z aktualizacjami macOS Sierra lub Safari 10 :(isSafari
nie działa pod<iframe>
Safari 10.1.2Możesz wypróbować następujący sposób, aby sprawdzić wersję przeglądarki.
A jeśli potrzebujesz znać tylko wersję przeglądarki IE, możesz wykonać poniższy kod. Ten kod działa dobrze dla wersji IE6 do IE11
źródło
chrome
słowa kluczowego w identyfikatorze użytkownika. przykład użytkownika 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 )
Wiem, że użycie lib może być przesadne , ale aby wzbogacić wątek, możesz sprawdzić, jak to zrobić w is.js :
źródło
is.js
i sprawdź, jak to robią.Oto kilka wybitnych bibliotek, które obsługują wykrywanie przeglądarki od grudnia 2019 r.
Bowser autor: lancedikson - 4065 ★ s - Ostatnia aktualizacja 2 października 2019 r. - 4,8 KB
* obsługuje Edge oparty na Chromium
Platform.js autor bestiejs - 2550 ★ s - Ostatnia aktualizacja 14 kwietnia 2019 - 5,9 KB
jQuery Browser autor: gabceb - 504 ★ s - Ostatnia aktualizacja 23 listopada 2015 - 1,3 KB
Detect.js (zarchiwizowany) autor: darcyclarke - 522 ★ s - Ostatnia aktualizacja 26 października 2015 - 2,9 KB
Wykrywanie przeglądarki (zarchiwizowane) przez QuirksMode - Ostatnia aktualizacja 14 listopada 2013 - 884B
Ważne uwagi:
Dalsza lektura
źródło
Na wypadek, gdyby ktokolwiek uznał to za przydatne, zmieniłem odpowiedź Roba W w funkcję, która zwraca ciąg przeglądarki, a nie wiele zmiennych. Ponieważ przeglądarka nie może się tak naprawdę zmienić bez ponownego ładowania, sprawiłem, że wyniki zostały zapisane w pamięci podręcznej, aby nie musiało to działać przy następnym wywołaniu funkcji.
źródło
window.chrome.webstore
została usunięta w Chrome 71, więc to podejście nie działa.Krótki wariant
źródło
Oto wersja odpowiedzi Roba z 2016 roku, w tym Microsoft Edge i wykrywanie Mrugnięcia:
( edytuj : Zaktualizowałem odpowiedź Roba powyższymi informacjami).
Piękno tego podejścia polega na tym, że opiera się on na właściwościach silnika przeglądarki, dlatego obejmuje nawet przeglądarki pochodne, takie jak Yandex lub Vivaldi, które są praktycznie kompatybilne z głównymi przeglądarkami, z których korzystają silniki. Wyjątkiem jest Opera, która opiera się na węszeniu agenta użytkownika, ale dziś (tj. Wer. 15 i więcej) nawet Opera sama jest jedynie powłoką dla Blink.
źródło
!!window.MSAssertion;
Test nie działa na mnie w beta krawędzi poprzez Remote Desktop. Zwraca fałsz.MSAssertion
Sztuczka jest dostosowana do wersji 25. Ale ponieważ wielu programistów polega na maszynach wirtualnych, postaram się ją dostosować do tej starszej wersji. Dobra decyzja. Dzięki.StyleMedia
(pisany wielkimi literami) jest specyficzny dla IE i Edge i wydaje się, że nigdzie nie zmierza.Możesz używać
try
icatch
używać różnych komunikatów o błędach przeglądarki. IE i Edge były pomieszane, ale użyłem pisania kaczki z Roba W (na podstawie tego projektu tutaj: https://www.khanacademy.org/computer-programming/i-have-opera/2395080328 ).źródło
Dziękuję wszystkim. Testowałem fragmenty kodu tutaj w najnowszych przeglądarkach: Chrome 55, Firefox 50, IE 11 i Edge 38 i wymyśliłem następującą kombinację, która działała dla mnie dla wszystkich z nich. Jestem pewien, że można to poprawić, ale jest to szybkie rozwiązanie dla każdego, kto potrzebuje:
Dodaje klasę CSS do kodu HTML o nazwie przeglądarki.
źródło
Nie mam pojęcia, czy jest to przydatne dla każdego, ale tutaj jest wariant, aby uszczęśliwić TypeScript.
}
navigator.userAgent
każdą możliwą przeglądarkę, którą masz. Więc to naprawdę nie jest niezawodne, jedynym przypadkiem byłoby, gdyby użytkownik miał tylko jedną przeglądarkę.Wykrywanie przeglądarek na komputerach i urządzeniach mobilnych: Edge, Opera, Chrome, Safari, Firefox, IE
Dzięki użytkownik @nimesh: 2063564
źródło
Istnieje również mniej „hacky” sposób, który działa we wszystkich popularnych przeglądarkach. Google umieściło kontrolę przeglądarki w swojej Bibliotece zamknięcia . W szczególności spójrz na
goog.userAgent
igoog.userAgent.product
. W ten sposób jesteś również na bieżąco, jeśli coś zmieni się w sposobie prezentacji się przeglądarki (biorąc pod uwagę, że zawsze uruchamiasz najnowszą wersję kompilatora zamknięcia).źródło
Jeśli chcesz wiedzieć, jaka jest wersja numeryczna określonej przeglądarki, możesz użyć następującego fragmentu kodu. Obecnie poinformuje Cię o wersji Chrome / Chromium / Firefox:
źródło
UAParser jest jedną z lekkich bibliotek JavaScript do identyfikacji przeglądarki, silnika, systemu operacyjnego, procesora oraz typu / modelu urządzenia na podstawie ciągu userAgent.
Dostępna jest sieć CDN. Podałem tutaj przykładowy kod wykrywający przeglądarkę za pomocą UAParser.
Teraz możesz użyć wartości
result.browser
warunkowo zaprogramować swoją stronę.Samouczek źródłowy: Jak wykryć przeglądarkę, silnik, system operacyjny, procesor i urządzenie za pomocą JavaScript?
źródło
źródło
To łączy oryginalną odpowiedź zarówno Roba i aktualizacji pilaw za 2016
źródło
Tutaj dowiesz się, która przeglądarka jest uruchomiona.
źródło
Możemy użyć poniższych metod
źródło
źródło
Prosty, pojedynczy wiersz kodu JavaScript podaje nazwę przeglądarki:
źródło
navigator.userAgent
każdą możliwą przeglądarkę, którą masz. Więc to naprawdę nie jest niezawodne, jedynym przypadkiem byłoby, gdyby użytkownik miał tylko jedną przeglądarkę.