Rilevazione di Internet Explorer 11

So che IE 11 ha una stringa di user agent diversa rispetto a tutti gli altri IE

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko 

Ho provato a rilevare IE 11 con la risposta specificata per questa domanda ‘

Jquery non riesce a rilevare IE 11

Questo è !!navigator.userAgent.match(/Trident\/7\./)

Ma sto ricevendo errore Object not found and needs to be re-evaluated.

Poi ho aperto la console di sviluppo in IE11 e ho provato ad accedere ad alcuni oggetti javascript predefiniti, sto ancora ricevendo lo stesso errore.

Ho provato

navigator.userAgent

window.navigator

console.log('test');

Qualcuno ha qualche idea al riguardo?

Modifica 18 nov 2016

Anche questo codice funziona ( per coloro che preferiscono un’altra soluzione, senza usare ActiveX )

 var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; // true on IE11 // false on Edge and other IEs/browsers. 

Risposta originale

Per controllare Ie11, puoi usare questo: (testato)

(o eseguilo)

!(window.ActiveXObject) && "ActiveXObject" in window

Ho tutti i VMS di IE:

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

Avviso: questo non funzionerà per IE12:

come puoi vedere qui, restituisce vero:

inserisci la descrizione dell'immagine qui

Quindi cosa possiamo fare :

Apparentemente, hanno aggiunto lo spazio bit della macchina:

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" 

quindi possiamo fare:

 /x64|x32/ig.test(window.navigator.userAgent) 

questo restituirà true solo per ie12.

Per rilevare rapidamente MSIE (dalla versione 6 alla 11):

 if(navigator.userAgent.indexOf('MSIE')!==-1 || navigator.appVersion.indexOf('Trident/') > 0){ /* Microsoft Internet Explorer detected in. */ } 

Tutte le risposte di cui sopra ignorano il fatto che accennate di non avere windows o navigatori 🙂

Poi ho aperto la console per gli sviluppatori in IE11

e questo è dove dice

Oggetto non trovato e deve essere rivalutato.

e navigatore, finestra, console, nessuno di essi esiste e deve essere rivalutato. L’ho avuto in emulazione. basta chiudere e aprire la console alcune volte.

Io uso la seguente funzione per rilevare la versione 9, 10 e 11 di IE:

 function ieVersion() { var ua = window.navigator.userAgent; if (ua.indexOf("Trident/7.0") > 0) return 11; else if (ua.indexOf("Trident/6.0") > 0) return 10; else if (ua.indexOf("Trident/5.0") > 0) return 9; else return 0; // not IE9, 10 or 11 } 

E come ho implementato questo

  

Questo collegamento è stato utile . Contiene il codice javascript per rilevare tutte le versioni di IE fino a IE11. Ho testato lo script con l’emulatore IE11. Per trovare l’emulatore IE11, fare clic con il tasto destro del mouse sul browser Web e selezionare “Ispeziona elemento”. In basso a sinistra della pagina, scorri verso il basso la barra di navigazione e fai clic sull’icona del desktop. La casella a discesa “Stringa agente utente” contiene opzioni per emulare IE6-11.

Funziona. L’ho usato solo alcuni minuti prima di scrivere questa risposta. Imansible pubblicare istantanee: non abbastanza reputazione.


Questo è il codice: segui il link per vederlo di nuovo:

 // Get IE or Edge browser version var version = detectIE(); if (version === false) { document.getElementById('result').innerHTML = 'IE/Edge'; } else if (version >= 12) { document.getElementById('result').innerHTML = 'Edge ' + version; } else { document.getElementById('result').innerHTML = 'IE ' + version; } // add details to debug result document.getElementById('details').innerHTML = window.navigator.userAgent; /** * detect IE * returns version of IE or false, if browser is not Internet Explorer */ function detectIE() { var ua = window.navigator.userAgent; // Test values; Uncomment to check result … // IE 10 // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'; // IE 11 // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko'; // Edge 12 (Spartan) // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'; // Edge 13 // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586'; var msie = ua.indexOf('MSIE '); if (msie > 0) { // IE 10 or older => return version number return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); } var trident = ua.indexOf('Trident/'); if (trident > 0) { // IE 11 => return version number var rv = ua.indexOf('rv:'); return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); } var edge = ua.indexOf('Edge/'); if (edge > 0) { // Edge (IE 12+) => return version number return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); } // other browser return false; } 
 @import url(https://fonts.googleapis.com/css?family=Fira+Mono|Fira+Sans:300); body { color: black; background-color: white; font-family: "Fira Sans", sans-serif; font-weight: 300; margin: 0; padding: 3rem; } h1 { color: darkgrey; text-align: center; font-weight: 300; font-size: 1.5rem; line-height: 2rem; } h2 { text-align: center; font-weight: 300; font-size: 4rem; } p { color: darkgrey; text-align: center; font-family: "Fira Mono", monospace; font-size: 1rem; line-height: 1.5rem; } 
 

Detect IE/Edge version with JavaScript.
Updated to recognize Internet Explorer 12+ aka Edge.

detecting…

n/a

L’uso di questo RegExp sembra funzionare per IE 10 e IE 11:

 function isIE(){ return /Trident\/|MSIE/.test(window.navigator.userAgent); } 

Non ho un IE più vecchio di IE 10 per testarlo.

Usa Navigatore: –

Il navigator è un object che contiene tutte le informazioni sul browser della macchina client.

navigator.appName restituisce il nome del browser della macchina client.

 navigator.appName === 'Microsoft Internet Explorer' || !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie === 1) ? alert("Please dont use IE.") : alert("This is not IE")