Wiem, że IE 11 ma inny ciąg agenta użytkownika niż wszystkie inne IE
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Próbowałem wykryć IE 11 z odpowiedzią określoną na to pytanie '
To jest !!navigator.userAgent.match(/Trident\/7\./)
Ale otrzymuję błąd
Object not found and needs to be re-evaluated.
Następnie otworzyłem konsolę programisty w IE11 i próbowałem uzyskać dostęp do niektórych predefiniowanych obiektów javascript, nadal otrzymuję ten sam błąd.
próbowałem
navigator.userAgent
window.navigator
console.log('test');
Czy ktoś ma o tym pojęcie?
javascript
internet-explorer
internet-explorer-11
Miqdad Ali
źródło
źródło
Object not found and needs to be re-evaluated.
Odpowiedzi:
Edycja 18 listopada 2016
Ten kod również działa ( dla tych, którzy wolą inne rozwiązanie, bez użycia ActiveX )
Oryginalna odpowiedź
Aby sprawdzić Ie11, możesz użyć tego: (testowane)
(lub uruchom to )
!(window.ActiveXObject) && "ActiveXObject" in window
Mam wszystkie VMS IE:
Uwaga: to nie zadziała dla IE11:
jak widać tutaj, zwraca prawdę:
Więc co możemy zrobić :
Najwyraźniej dodali przestrzeń bitową maszyny:
ie11:
ie12:
więc możemy zrobić:
to zwróci prawdę tylko dla ie11.
źródło
x64
zwraca zarówno Chrome, jak i Edgewindow.MSInputMethodContext
.Aby szybko wykryć MSIE (od wersji 6 do 11):
źródło
indexOf()
być drugi> -1
?Używam następującej funkcji do wykrywania wersji 9, 10 i 11 IE:
źródło
Wszystkie powyższe odpowiedzi ignorują fakt, że wspominasz, że nie masz okna ani nawigatora :-)
i tam jest napisane
i nawigator, okno, konsola, żadne z nich nie istnieje i musi zostać ponownie ocenione. Miałem to na emulacji. wystarczy kilka razy zamknąć i otworzyć konsolę.
źródło
Całkiem bezpiecznym i zwięzłym sposobem wykrywania tylko IE 11 jest
if(window.msCrypto) { /* I'm IE11 for sure */ }
lub coś w tym stylu
var IE11= !!window.msCrypto;
msCrypto
jest wersjąwindow.crypto
obiektu z prefiksem i zaimplementowaną tylko w IE 11.https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto
źródło
/x64|x32/ig.test(window.navigator.userAgent)
dotyczy również Firefoksa!I jak to wdrożyłem
źródło
&& "ActiveXObject" in window
. Po trzecie: co to za sztuczka z podwójną negacją!!
?Okay, spróbuj tego, prostego i dla IE11 i IE poniżej 11 wersji
navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1
dla wersji IE 11navigator.userAgent.toUpperCase().indexOf("MSIE") != -1
dla wersji IE poniżej 11źródło
Ten link był pomocny . Zawiera kod javascript do wykrywania wszystkich wersji IE do IE11. Testowałem skrypt z emulatorem IE11. Aby znaleźć emulator IE11, kliknij prawym przyciskiem myszy w przeglądarce internetowej i kliknij „Sprawdź element”. Przewiń pasek nawigacji w lewym dolnym rogu strony i kliknij ikonę na pulpicie. Lista rozwijana „Ciąg agenta użytkownika” zawiera opcje emulacji IE6-11.
To działa. Użyłem go kilka minut przed napisaniem tej odpowiedzi. Nie można publikować migawek - za mało reputacji.
To jest kod - kliknij łącze, aby wyświetlić go ponownie:
źródło
Używanie tego RegExp wydaje się działać dla IE 10 i IE 11:
Nie mam IE starszego niż IE 10, aby to przetestować.
źródło
Użyj Nawigatora: -
navigator
Jest obiektem, który zawiera wszystkie informacje o przeglądarce urządzenia klienckiego.navigator.appName
zwraca nazwę przeglądarki komputera klienta.źródło
Odkryłem, że IE11 podaje więcej niż jeden ciąg znaków agenta użytkownika w różnych środowiskach.
Zamiast polegać na
MSIE
i innych podejściach, lepiej polegać naTrident
wersjiMam nadzieję że to pomoże :)
źródło