Kiedy chcę wykryć IE, używam tego kodu:
function getInternetExplorerVersion()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
msg = "You are using IE " + ver;
}
alert( msg );
}
Ale IE11 zwraca „Nie używasz Internet Explorera”. Jak mogę to wykryć?
internet-explorer
debugging
internet-explorer-11
browser-detection
forward-compatibility
Paul Sweatte
źródło
źródło
Odpowiedzi:
IE11 nie zgłasza już, ponieważ
MSIE
zgodnie z tą listą zmian celowo jest unikać błędnego wykrywania.To, co możesz zrobić, jeśli naprawdę chcesz wiedzieć, że to IE, to wykrycie
Trident/
ciągu w kliencie użytkownika, jeślinavigator.appName
zwróciNetscape
, coś w rodzaju (nieprzetestowane);Zauważ, że IE11 (afaik) wciąż jest w wersji zapoznawczej, a klient użytkownika może się zmienić przed wydaniem.
źródło
it's intentional to avoid mis-detection
- Niestety, teraz, gdy IE11 jest wydany, mamy kod, który jest uszkodzony tylko w IE11, podczas gdy poprawne wykrycie IE działałoby ...function isIE() { return ((navigator.appName == 'Microsoft Internet Explorer') || ((navigator.appName == 'Netscape') && (new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null))); }
var isIE11 = !!navigator.userAgent.match(/Trident\/7\./);
źródłoSłuży
!(window.ActiveXObject) && "ActiveXObject" in window
do jawnego wykrywania IE11.Aby wykryć dowolną wersję IE (wcześniejszą niż Edge, „Trident”), użyj
"ActiveXObject" in window
zamiast tego.źródło
window.ActiveXObject
, jak opisano w tym artykule, powracaundefined
teraz w IE11 (a także w przeglądarkach innych niż Microsoft). Test przy użyciuin
operatora javascript zwraca siętrue
we wszystkich przeglądarkach Microsoft, więc oba przypadki mają miejsce dokładnie w IE11. Jeśli Microsoft wyda zmianę w zachowaniuin
operatora, tak, ta metoda się zepsuje.Użyj
MSInputMethodContext
jako część kontroli wykrywania funkcji. Na przykład:Bibliografia
źródło
#false
w nie-IE, IE8,9,10, Edge 14,15.#true
tylko w IE11. Nie testowano przy aktywnym trybie dokumentu. Testowane z Browserstack.Przeczytałem twoje odpowiedzi i zrobiłem miks. Wygląda na to, że działa z Windows XP (IE7 / IE8) i Windows 7 (IE9 / IE10 / IE11).
Oczywiście, jeśli zwrócę 0, oznacza to brak IE.
źródło
Pobierz wersję IE z User-Agent
Jak to działa: Łańcuch klienta użytkownika dla wszystkich wersji IE zawiera fragment „MSIE Space Version ” lub „Trident other-text rv space-or-colon version ”. Wiedząc o tym, pobieramy numer wersji z
String.match()
wyrażenia regularnego.try-catch
Blok służy do skrócenia kodu, w przeciwnym razie musielibyśmy testować granice tablicy dla przeglądarek nie-IE.Uwaga: klienta użytkownika można sfałszować lub pominąć, czasem niezamierzenie, jeśli użytkownik ustawił przeglądarkę w „trybie zgodności”. Chociaż w praktyce nie wydaje się to dużym problemem.
Pobierz wersję IE bez klienta użytkownika
Jak to działa: Każda wersja IE dodaje obsługę dodatkowych funkcji, których nie znaleziono w poprzednich wersjach. Możemy więc przetestować funkcje w sposób odgórny. Jednak dla zwięzłości zastosowano tutaj sekwencję trójskładnikową ,
if-then
aswitch
instrukcje równie dobrze by działały. Zmiennaie
jest ustawiona na liczbę całkowitą 5-11 lub 1 dla starszych lub 99 dla nowszych / nie-IE. Możesz ustawić go na 0, jeśli chcesz dokładnie przetestować IE 1-11.Uwaga: Wykrywanie obiektów może się zepsuć, jeśli Twój kod jest uruchamiany na stronie ze skryptami innych firm, które dodają polifill dla takich rzeczy
document.addEventListener
. W takich sytuacjach najlepszym rozwiązaniem jest klient użytkownika.Wykryj, czy przeglądarka jest nowoczesna
Jeśli interesuje Cię tylko to, czy przeglądarka obsługuje większość standardów HTML 5 i CSS 3, możesz rozsądnie założyć, że głównym problemem są aplikacje IE 8 i niższe. Testowanie
window.getComputedStyle
daje również całkiem dobrą mieszankę nowoczesnych przeglądarek (IE 9, FF 4, Chrome 11, Safari 5, Opera 11.5). IE 9 znacznie poprawia obsługę standardów, ale natywna animacja CSS wymaga IE 10.źródło
var ie = 0; try { ie = navigator.userAgent.match( /(MSIE |Trident.*rv[ :])([0-9]+)/ )[ 2 ]; } catch(e){} if (ie !== 0) { location.href = "../ie-redirect/redirect.html"; }
Angular JS robi to w ten sposób.
msie będzie liczbą dodatnią, jeśli jej IE i NaN dla innych przeglądarek takich jak chrome, firefox.
czemu ?
Począwszy od Internet Explorera 11, łańcuch użytkownika-użytkownika znacznie się zmienił.
odnoszą się to:
msdn # 1 msdn # 2
źródło
rozwiązanie :
źródło
This is IE 0
Używam prostszej metody:
Globalny obiekt nawigatora ma punkty styku z właściwością, w programie Internet Exlorer 11 nazywa się msMaxTouchPoints.
Więc jeśli szukasz:
Znajdziesz Internet Explorer 11.
źródło
źródło
Spróbuj tego:
źródło
!navigator.userAgent.match("Acoo Browser;") && navigator.userAgent.match(/MSIE/i) ? true : false
ale to nie zawsze działa, ponieważ przeglądarka acoo nie zawsze ma „Acoo Browser;” w swoim useragent, ale tak naprawdę nie musisz się przejmować, że przeglądarka acoo ma w swoim useragent „MSIE”, ponieważ przeglądarka acoo jest prawie taka sama.To wydaje się być lepszą metodą. „indexOf” zwraca -1, jeśli nic nie jest dopasowane. Nie zastępuje istniejących klas na ciele, po prostu dodaje je.
źródło
Wykryj większość przeglądarek za pomocą tego:
https://gist.github.com/earlonrails/5266945
źródło
Użyłem
onscroll
zdarzenia przy elemencie z paskiem przewijania. Po uruchomieniu w IE dodałem następującą weryfikację:źródło
Tylko dla przeglądarki IE:
użyj alertu (tj.);
Testowanie:
Aktualizacja 01 czerwca 2017 r
Teraz możemy użyć czegoś łatwiejszego i prostszego:
źródło
Szczerze mówiąc powiedziałbym, że korzystaj z biblioteki, która robi to, czego potrzebujesz (na przykład platforma.js). W pewnym momencie wszystko się zmieni i biblioteka zostanie wyposażona w te zmiany, a ręczne parsowanie przy użyciu wyrażeń regularnych zakończy się niepowodzeniem.
Dzięki Bogu IE odchodzi ...
źródło