Wywołuję funkcję taką jak ta poniżej, klikając div z określoną klasą.
Czy jest sposób, aby sprawdzić podczas uruchamiania funkcji, czy użytkownik korzysta z Internet Explorera, i przerwać / anulować, jeśli korzystają z innych przeglądarek, aby działał tylko dla użytkowników IE? Użytkownicy tutaj byliby na IE8 lub wyższych wersjach, więc nie musiałbym obejmować IE7 i niższych wersji.
Gdybym mógł powiedzieć, z której przeglądarki korzystają, byłoby świetnie, ale nie jest wymagane.
Przykładowa funkcja:
$('.myClass').on('click', function(event)
{
// my function
});
javascript
jquery
internet-explorer
browser-detection
użytkownik2571510
źródło
źródło
With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)
. Przepraszam, ale to szaleństwo musi się kiedyś skończyć i jakoś ...Odpowiedzi:
Użyj poniższej metody JavaScript:
Szczegółowe informacje można znaleźć na stronie pomocy technicznej Microsoft:
Jak ustalić wersję przeglądarki ze skryptu
Aktualizacja: (obsługa IE 11)
źródło
if (msie > 0)
jest mylące. Jeśli wartość nie zostanie znaleziona, funkcja indexOf () zwraca -1, a nie 0. Dlategoif (msie > -1)
byłoby bardziej objaśniające.IE 11
: stackoverflow.com/a/21712356/114029/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)
Wiem, że działa to na 10 i 11. Jeśli możesz zweryfikować <IE9 i Edge, edytuj odpowiedź.Minęło kilka lat później, a przeglądarka Edge używa teraz Chromium jako silnika renderowania.
Niestety, sprawdzanie IE 11 nadal jest problemem.
Oto bardziej proste podejście, ponieważ starożytne wersje IE powinny zniknąć.
Oto moja stara odpowiedź (2014):
W Edge zmieniono ciąg agenta użytkownika .
Przykładowe użycie:
Domyślny ciąg IE 10:
Domyślny ciąg IE 11:
Domyślny ciąg Edge 12:
Domyślny ciąg Edge 13 (thx @DrCord):
Domyślny ciąg Edge 14:
Domyślny ciąg Edge 15:
Domyślny ciąg Edge 16:
Domyślny ciąg Edge 17:
Domyślny ciąg Edge 18 (podgląd poufnych informacji):
Test w CodePen:
http://codepen.io/gapcode/pen/vEJNZN
źródło
Jeśli wszystko, co chcesz wiedzieć, to czy przeglądarka to IE, czy nie, możesz to zrobić:
Aktualizacja 1: lepsza metoda
Polecam to teraz. Jest nadal bardzo czytelny i zawiera znacznie mniej kodu :)
Dzięki JohnnyFun w komentarzach do skróconej odpowiedzi :)
Aktualizacja 2: Testowanie IE w CSS
Po pierwsze, jeśli możesz, powinieneś użyć
@supports
instrukcji zamiast JS do sprawdzenia, czy przeglądarka obsługuje określoną funkcję CSS.(Pamiętaj, że IE w ogóle nie obsługuje
@supports
i zignoruje wszelkie style umieszczone w pliku@supports
instrukcji).Jeśli problemu nie można rozwiązać,
@supports
możesz to zrobić:(Uwaga:
classList
jest stosunkowo nowy w JS i myślę, że z przeglądarek IE działa tylko w IE11. Prawdopodobnie także IE10.)Jeśli używasz SCSS (Sass) w swoim projekcie, można to uprościć:
Aktualizacja 3: Dodawanie Microsoft Edge (niezalecane)
Jeśli chcesz również dodać Microsoft Edge do listy, możesz wykonać następujące czynności. Jednak nie polecam go, ponieważ Edge jest znacznie bardziej kompetentną przeglądarką niż IE.
źródło
ms_ie = !!ua.match(/MSIE|Trident/)
~
ma jakieś znaczenie?Zwraca to
true
dla dowolnej wersji Internet Explorera:Ten
userAgent
parametr jest opcjonalny i domyślnie jest ustawiony na klienta użytkownika przeglądarki.źródło
Tak właśnie robi zespół Angularjs (wersja 1.6.5 ):
Następnie jest kilka wierszy kodu rozrzuconych po całym obszarze, używając go jako liczby, takiej jak
i
źródło
document.documentMode
jest obsługiwany przez IE8 +. Będzie'undefined'
dla Edge lub Chrome / FireFox ... Zmieniłem ten kod navar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);
taki, że zwraca dokładną wersję IE dla IE8 +, 99 dla przeglądarek innych niż IE (zwykle będzie to nowoczesna przeglądarka) i 1 dla starych IE5-7. Jest tak napisane, ponieważ zwykle potrzebujemy specjalnej pracy tylko dla niektórych starszych IE.if (IEver < 9) { ... }
Oznacza to , że jeśli jest to stara IEMożesz użyć obiektu navigator do wykrycia użytkownika nawigatora, nie potrzebujesz do niego jquery
http://www.javascriptkit.com/javatutors/navigator.shtml
źródło
Korzystając z powyższych odpowiedzi; proste i skrócone zwracanie wartości logicznej:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
źródło
Metoda 01:
$ .browser został uznany za przestarzały w wersji jQuery 1.3 i usunięty w wersji 1.9
Metoda 02:
Korzystanie z komentarzy warunkowych
Metoda 03:
Metoda 04:
Użyj JavaScript / ręcznego wykrywania
Link referencyjny
źródło
.ie10
klasy jest jedną z najlepszych opcji, jeśli robisz jakąś poprawkę css tylko dla ie10. Ponieważ Internet Explorer 10 dodaje".ie10"
klasę do elementu HTML<html class="ie10">
, możesz go używać w następujący sposób.ie10 .myclass {//some css here}
Chciałem tylko sprawdzić, czy przeglądarka ma IE11 lub starszą wersję, bo cóż, to bzdury.
źródło
źródło
Korzystanie z modernizatora
źródło
Lub ta naprawdę krótka wersja zwraca wartość true, jeśli przeglądarkami jest Internet Explorer:
źródło
Jeszcze jedna prosta (ale czytelna dla człowieka) funkcja wykrywająca, czy przeglądarka jest IE, czy nie (ignorując Edge, co wcale nie jest złe):
źródło
Jeśli nie chcesz używać narzędzia użytkownika, możesz to zrobić, aby sprawdzić, czy przeglądarka to IE. Skomentowany kod faktycznie działa w przeglądarkach IE i zmienia „fałsz” na „prawda”.
źródło
Wiem, że jest to stare pytanie, ale na wypadek, gdyby ktoś napotkał je ponownie i miał problemy z wykryciem IE11, oto działające rozwiązanie dla wszystkich obecnych wersji IE.
źródło
użyłem tego
źródło
Wiele odpowiedzi tutaj i chciałbym dodać swój wkład. IE 11 był takim dupkiem w sprawie Flexboksa (zobacz wszystkie jego problemy i niespójności tutaj ), że naprawdę potrzebowałem łatwego sposobu, aby sprawdzić, czy użytkownik korzysta z dowolnej przeglądarki IE (do 11 włącznie), ale z wyłączeniem Edge, ponieważ Edge jest w rzeczywistości nieźle.
Na podstawie podanych tutaj odpowiedzi napisałem prostą funkcję zwracającą globalną zmienną boolowską, której można następnie użyć w dół linii. Bardzo łatwo jest sprawdzić IE.
W ten sposób wystarczy wykonać wyszukiwanie tylko raz i zapisać wynik w zmiennej, zamiast pobierać wynik przy każdym wywołaniu funkcji. (O ile wiem, nie musisz nawet czekać na dokument gotowy do wykonania tego kodu, ponieważ klient użytkownika nie jest powiązany z DOM).
źródło
Spróbuj tego, jeśli używasz wersji jquery> = 1.9 ,
Jeśli używasz jQuery w wersji <1.9 ($ .browser został usunięty w jQuery 1.9), zamiast tego użyj następującego kodu:
źródło
@ Rozwiązanie SpiderCode nie działa z IE 11. Oto najlepsze rozwiązanie, którego użyłem odtąd w moim kodzie, w którym potrzebuję wykrywania przeglądarki dla określonej funkcji.
IE11 nie zgłasza już jako MSIE, zgodnie z tą listą zmian, celowo jest unikać błędnego wykrywania.
Jeśli naprawdę chcesz wiedzieć, że to IE, możesz wykryć trójząb / ciąg znaków w kliencie użytkownika, jeśli navigator.appName zwraca Netscape, coś w rodzaju (niesprawdzone);
Dzięki tej odpowiedzi
źródło
Poniżej znalazłem elegancki sposób na zrobienie tego podczas googlingu ---
źródło
Zaktualizuj odpowiedź SpiderCode, aby naprawić problemy, w których ciąg „MSIE” zwraca -1, ale pasuje do „Trident”. Kiedyś zwracał NAN, ale teraz zwraca 11 dla tej wersji IE.
źródło
Możesz wykryć wszystkie programy Internet Explorer (ostatnia testowana wersja 12).
Zobacz tutaj https://jsfiddle.net/v7npeLwe/
źródło
Powinieneś zobaczyć wynik w konsoli, użyj chrome Inspect.
źródło
Umieściłem ten kod w funkcji gotowości dokumentu i uruchamia się on tylko w przeglądarce Internet Explorer. Testowane w Internet Explorerze 11.
źródło
Działa to tylko poniżej wersji IE 11.
console.log("version number",ie_version);
źródło
Funkcja JavaScript do wykrywania wersji przeglądarki Internet Explorer lub Edge
źródło
Nekromancja.
Aby nie zależeć od ciągu klienta użytkownika, po prostu sprawdź kilka właściwości:
Wykrywa to również nową Chredge (Anaheim):
I to wykrywa chrom:
A to Safari:
źródło
Spróbuj zrobić tak
źródło
Myślę, że to pomoże Tutaj
źródło
Możesz użyć
$.browser
aby uzyskać informacje o nazwie, dostawcy i wersji.Zobacz http://api.jquery.com/jQuery.browser/
źródło