javascript - Internet Explorer 11-deteksjon
Jeg vet at IE 11 har en annen brukeragentstreng enn alle andre IE
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko
Jeg har prøvd å oppdage IE 11 med svar spesifisert for dette spørsmålet
Jquery klarer ikke å oppdage IE 11
Det er det!! navigator.userAgent.match(/Trident\/7\./)
Men jeg får feilen Objekt ikke funnet og må vurderes på nytt.
Så åpnet jeg utviklerkonsollen i IE11 og prøvde å få tilgang til noen forhåndsdefinerte JavaScript-objekter, jeg får fortsatt samme feilmelding.
Jeg har prøvd
navigator.userAgentwindow.navigatorconsole.log('test');Har noen noen idé om det?
Svar #1
Rediger 18. nov. 2016
Denne koden fungerer også (for de som foretrekker en annen løsning, uten å bruke ActiveX)
var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
// true on IE11
// false on Edge and other IEs/browsers.
Opprinnelig svar
For å sjekke IE11, kan du bruke dette: (testet)
(eller kjør dette)
!(window.ActiveXObject) && "ActiveXObject" in windowJeg har alle VMS av IE :
Merk: dette vil ikke fungere for IE11:
som du kan se her, returnerer det sant:
Så hva kan vi gjøre :
Tilsynelatende la de til maskinbitplassen:
ie11 :
"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"
ie12 :
"Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko"
så vi kan gjøre:
/x64|x32/ig.test(window.navigator.userAgent)
dette vil returnere sant bare for ie11.
Svar #2
For å oppdage MSIE (fra versjon 6 til 11) raskt:
if(navigator.userAgent.indexOf('MSIE')!==-1
|| navigator.appVersion.indexOf('Trident/') > -1){
/* Microsoft Internet Explorer detected in. */
}
Svar #3
Jeg bruker følgende funksjon for å oppdage versjon 9, 10 og 11 av IE:
function ieVersion() {
var ua = window.navigator.userAgent;
if (ua.indexOf("Trident/7.0") > -1)
return 11;
else if (ua.indexOf("Trident/6.0") > -1)
return 10;
else if (ua.indexOf("Trident/5.0") > -1)
return 9;
else
return 0; // not IE9, 10 or 11
}
Svar #4
Alle de ovennevnte svarene ignorerer det faktum at du nevner at du ikke har noe vindu eller navigator :-)
Så åpnet jeg utviklerkonsollen i IE11
og det er der det står
Objektet ble ikke funnet og må vurderes på nytt.
og navigator, window, console, ingen av dem eksisterer og må vurderes på nytt. Jeg har hatt det i emulering. bare lukk og åpne konsollen noen ganger.
Svar #5
En ganske trygg og konsis måte å oppdage kun IE 11 på er
if(window.msCrypto) {
// I'm IE11 for sure
}
eller noe sånt
var IE11= !!window.msCrypto;
msCrypto er en prefiksert versjon av window.crypto-objektet og er kun implementert i IE 11.
https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto
Svar #6
OK, prøv dette, enkelt og for IE11 og IE under versjon 11
browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;
navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 for IE 11-versjon navigator.userAgent.toUpperCase().indexOf("MSIE") != -1 for IE-versjoner under 11
browserIsIE = navigator.userAgent.toUpperCase().indexOf("TRIDENT/") != -1 || navigator.userAgent.toUpperCase().indexOf("MSIE") != -1;
console.log('Is IE Browser : '+ browserIsIE)



