Controlla se l'utente sta utilizzando IE


391

Chiamo una funzione come quella qui sotto facendo clic sui div con una determinata classe.

Esiste un modo per verificare quando si avvia la funzione se un utente utilizza Internet Explorer e interromperla / annullarla se utilizza altri browser in modo che venga eseguita solo per gli utenti di IE? Gli utenti qui sarebbero tutti su IE8 o versioni successive, quindi non avrei bisogno di coprire IE7 e versioni precedenti.

Se potessi dire quale browser stanno usando sarebbe fantastico ma non è necessario.

Esempio di funzione:

$('.myClass').on('click', function(event)
{
    // my function
});

1
Usa il modernizzatore per rilevare IE o altri browser. stackoverflow.com/questions/13478303/…
chris,

7
Secondo i moderni standard di sviluppo web, è una cattiva pratica sviluppare per le vecchie versioni di IE per cominciare.
Rosseyn,

7
In realtà, questa "cattiva pratica" è forzata dagli standard stessi, quindi non è colpa dello sviluppatore ... I browser funzionano in modo diverso e le specifiche sono troppo leggere sui problemi di implementazione. Al fine di rendere qualcosa che non è difettoso e non noioso come un diavolo si deve fare il rilevamento del browser. Vorrei suggerire un altro best practice: With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all). Scusa, ma questa follia deve finire ad un certo punto e in qualche modo ...
user2173353

2
Oggi è meglio fare "rilevamento funzionalità" piuttosto che "rilevamento browser". Chiedi invece se il browser fa quello che ti serve.
Chris Rogers,

2
@Chris - scuse ... significava che aveva più di un tono scherzoso. Incolperò IE per aver rubato la mia gioia e avermi lasciato con amarezza e frustrazione. :)
JDB ricorda ancora Monica il

Risposte:


477

Usa sotto il metodo JavaScript:

function msieversion() 
{
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0) // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

È possibile trovare i dettagli sul sito di supporto Microsoft di seguito:

Come determinare la versione del browser dallo script

Aggiornamento: (supporto IE 11)

function msieversion() {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

27
anche se questo funzionerebbe bene poiché la variabile ua non inizierà mai con MSIE, la scrittura if (msie > 0)è fuorviante. Se il valore non viene trovato, la funzione indexOf () restituisce -1 non 0. Quindi if (msie > -1)sarebbe più esplicativo.
Neville Nazerane,

61
Questo restituisce NaN in IE11, per me.
verismo,

7
@verism e altri: controllare questo risposta che funziona anche per IE 11: stackoverflow.com/a/21712356/114029
Leniel Maccaferri

8
navigator.userAgent.indexOf ("MSIE")> 0 || navigator.userAgent.indexOf ("Trident")> 0 || navigator.userAgent.indexOf ("Edge")> 0
tylermauthe

12
/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)So che funziona su 10 e 11. Se riesci a verificare <IE9 e Edge, modifica la risposta.
Indolente

595

Sono passati diversi anni e il browser Edge ora utilizza Chromium come motore di rendering.
Controllare per IE 11 è ancora una cosa, purtroppo.

Ecco un approccio più semplice, poiché le versioni antiche di IE dovrebbero essere sparite.

if (window.document.documentMode) {
  // Do IE stuff
}

Ecco la mia vecchia risposta (2014):

In Edge la stringa dell'agente utente è stata modificata.

/**
 * detect IEEdge
 * returns version of IE/Edge or false, if browser is not a Microsoft browser
 */
function detectIEEdge() {
    var ua = window.navigator.userAgent;

    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 => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}

Esempio di utilizzo:

alert('IEEdge ' + detectIEEdge());

Stringa predefinita di IE 10:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

Stringa predefinita di IE 11:

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

Stringa predefinita di Edge 12:

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 

Stringa predefinita di Edge 13 (thx @DrCord):

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 

Stringa predefinita di Edge 14:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300 

Stringa predefinita di Edge 15:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063 

Stringa predefinita di Edge 16:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299 

Stringa predefinita di Edge 17:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134 

Stringa predefinita di Edge 18 (anteprima Insider):

Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730 

Test su CodePen:

http://codepen.io/gapcode/pen/vEJNZN


4
Grazie per aver commentato. Non ho ancora verificato la tua risposta, ma voglio commentare una cosa: dato che il primo 'if' contiene un 'return', non hai bisogno di un 'altro' in seguito.
Mario

30
Solo curioso, perché diamine cambiano la linea dell'agente utente nelle nuove versioni di IE? La SM seriamente non vuole che rileviamo il suo terribile browser web.
c00000fd,

3
@SameerAlibhai Che suona bene in teoria, ma in pratica, soprattutto attualmente, non è pratico. A volte sorgono problemi che un singolo rilevamento di "funzionalità" non comprende e inoltre alcune funzionalità hanno stranezze di implementazione che possono essere aggirate solo con la conoscenza del browser. E se volessi fare qualcosa di semplice come raccogliere le statistiche del browser?
Leggero

34
Va notato che Edge non è in realtà "IE12" ma è in realtà un browser completamente separato. Windows 10 viene fornito con IE11 e Edge installati.
moloko,

16
il mio odio per IE cresce
Kolob Canyon,

135

Se tutto ciò che vuoi sapere è se il browser è IE o no, puoi farlo:

var isIE = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');

if ((old_ie > -1) || (new_ie > -1)) {
    isIE = true;
}

if ( isIE ) {
    //IE specific code goes here
}

Aggiornamento 1: un metodo migliore

Lo consiglio adesso. È ancora molto leggibile ed è molto meno codice :)

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);

if ( isIE ) {
  //IE specific code goes here
}

Grazie a JohnnyFun nei commenti per la risposta abbreviata :)

Aggiornamento 2: Test per IE in CSS

In primo luogo, se è possibile, è necessario utilizzare le @supportsistruzioni anziché JS per verificare se un browser supporta una determinata funzionalità CSS.

.element {
  /* styles for all browsers */
}

@supports (display: grid) {
  .element {
    /* styles for browsers that support display: grid */
  }
}

(Nota che IE non supporta @supportsaffatto e ignorerà tutti gli stili inseriti in @supportsun'istruzione.)

Se il problema non può essere risolto @supports, puoi farlo:

// JS

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);

if ( isIE ) {
  document.documentElement.classList.add('ie')
}
/* CSS */

.element {
  /* styles that apply everywhere */
}

.ie .element {
  /* styles that only apply in IE */
}

(Nota: classListè relativamente nuovo per JS e penso che, fuori dai browser IE, funzioni solo in IE11. Forse anche IE10.)

Se si utilizza SCSS (Sass) nel progetto, questo può essere semplificato per:

/* SCSS (Sass) */

.element {
  /* styles that apply everywhere */

  .ie & {
    /* styles that only apply in IE */
  }
}

Aggiornamento 3: aggiunta di Microsoft Edge (non consigliato)

Se si desidera aggiungere anche Microsoft Edge all'elenco, è possibile effettuare le seguenti operazioni. Tuttavia non lo consiglio perché Edge è un browser molto più competente di IE.

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident|Edge\//.test(ua);

if ( isIE ) {
  //IE & Edge specific code goes here
}

5
O lo stesso in pochi byte: ms_ie = ~ ua.indexOf ('MSIE') || ~ ua.indexOf ( 'Trident /'); ;-)
Simon Steinberger,

12
La mia versione ha un senso molto più immediato per un essere umano ma meno byte è sempre buono :)
Daniel Tonon

7
oppurems_ie = !!ua.match(/MSIE|Trident/)
xori,

5
oppure ms_ie = /MSIE|Trident/.test(ua)
JohnnyFun

1
@SimonSteinberger ~ha qualche significato?
1,21 gigawatt il

45

Questo ritorna trueper qualsiasi versione di Internet Explorer:

function isIE(userAgent) {
  userAgent = userAgent || navigator.userAgent;
  return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}

Il userAgentparametro è facoltativo e per impostazione predefinita è l'agente utente del browser.


Questo dovrebbe essere buono, ma in pratica hai dimenticato di impostare un valore predefinito "return true" o "return 1" per i browser IE. Questo al momento non restituisce alcun valore quando vengono rilevati i browser IE.
Vincent Edward Gedaria Binua,

10
Perché dovresti trattare Edge come IE? In termini di compatibilità, hanno poco in comune al giorno d'oggi.
minexew,

@docta_faustus userAgent è un parametro, non un globale
bendytree

29

Ecco come lo sta facendo il team Angularjs ( v 1.6.5 ):

var msie, // holds major version number for IE, or NaN if UA is not IE.

// Support: IE 9-11 only
/**
 * documentMode is an IE-only property
 * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
 */
msie = window.document.documentMode;

Quindi ci sono diverse linee di codice sparse per usarlo come un numero come

if (event === 'input' && msie <= 11) return false;

e

if (enabled && msie < 8) {

window.document.documentMode non è definito in MS Edge
Veselin Vasilev

25
non è definito in MS Edge perché MS Edge non è IE!
JCKödel,

1
document.documentModeè supportato da IE8 +. Sarà 'undefined'per Edge o Chrome / FireFox .... Ho modificato questo codice in modo var IEver = window.document.documentMode || (window.attachEvent? 1 : 99);tale che restituisca la versione IE esatta per IE8 +, 99 per i browser non IE (di solito sarà un browser moderno) e 1 per il vecchio IE5-7. Questo è scritto perché di solito abbiamo bisogno di un lavoro speciale solo per alcuni vecchi IE. Quindi, if (IEver < 9) { ... }significa se è un vecchio IE
S.Serpooshan,

29

È possibile utilizzare l'oggetto navigator per rilevare l'utente-navigator, non è necessario jquery per esso

<script type="text/javascript">

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){ 

 // Do stuff with Internet-Exploders ... :)
}

</script>

http://www.javascriptkit.com/javatutors/navigator.shtml


4
Questo mi dà falso per il mio IE11
Curtis, l'

2
L'agente utente di IE11 è diverso da MSIE (XX); IE11 sarebbe trovato controllando Trident.
Orfeo,

Questo dà un falso positivo in Firefox 45.0.2.
Tim S. Van Haren,

indice di test errato Se non restituisce vero o falso come regex della funzione di test che hai fatto navigator.userAgent.indexOf ("Trident /")! = -1
Dahar Youssef,

10

Utilizzando le risposte sopra; Booleano di ritorno semplice e condensato:

var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);


1
Restituisce false in FireFox 44.0.2 su Widnows 10. Quale versione di FireFox restituisce true @ SiKni8?
Arthur Hebert,

9

Metodo 01:
$ .browser è stato deprecato in jQuery versione 1.3 e rimosso in 1.9

if ( $.browser.msie) {
  alert( "Hello! This is IE." );
}

Metodo 02:
Utilizzo dei commenti condizionali

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

Metodo 03:

 /**
 * Returns the version of Internet Explorer or a -1
 * (indicating the use of another browser).
 */
function getInternetExplorerVersion()
{
    var rv = -1; // Return value assumes failure.

    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 )
    {
        if ( ver >= 8.0 ) 
            msg = "You're using a recent copy of Internet Explorer."
        else
            msg = "You should upgrade your copy of Internet Explorer.";
    }

    alert( msg );
}

Metodo 04:
Usa JavaScript / Rilevamento manuale

/*
     Internet Explorer sniffer code to add class to body tag for IE version.
     Can be removed if your using something like Modernizr.
 */
 var ie = (function ()
 {

     var undef,
     v = 3,
         div = document.createElement('div'),
         all = div.getElementsByTagName('i');

     while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i>< ![endif]-->',
     all[0]);

     //append class to body for use with browser support
     if (v > 4)
     {
         $('body').addClass('ie' + v);
     }

 }());

Link di riferimento


@radhe Ho aggiornato la risposta speriamo che questo funzioni per te.
Aamir Shahzad,

Come nota: il metodo 2 non funzionerà in IE10 o meglio in modalità standard. Per ulteriori informazioni: i commenti condizionali non sono più supportati
inserireusernamequi

@insertusernamequi hai ragione, per questo penso che l'uso della .ie10classe sia una delle migliori opzioni se stai facendo qualche correzione css solo per ie10. Mentre Internet Explorer 10 aggiunge ".ie10"classe all'elemento HTML <html class="ie10">, puoi quindi usarlo come.ie10 .myclass {//some css here}
Aamir Shahzad

8

Volevo solo verificare se il browser era IE11 o più vecchio, perché bene, sono una schifezza.

function isCrappyIE() {
    var ua = window.navigator.userAgent;
    var crappyIE = false;
    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {// IE 10 or older => return version number        
        crappyIE = true;
    }
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {// IE 11 => return version number        
        crappyIE = true;
    }
    return crappyIE;
}   

if(!isCrappyIE()){console.table('not a crappy browser);}

2
questo ottiene il mio voto per il suo grande rispetto per gli standard della convenzione di denominazione
redbandit

7
function detectIE() {
    var ua = window.navigator.userAgent;
    var ie = ua.search(/(MSIE|Trident|Edge)/);

    return ie > -1;
}

Non risponde alla domanda Edge non è IE.
hda

hda, domande datate 2013, penso che oggi sia interessante non ignorare "Edge"
Boss COTIGA

5

Utilizzando modernizr

Modernizr.addTest('ie', function () {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ') > 0;
    var ie11 = ua.indexOf('Trident/') > 0;
    var ie12 = ua.indexOf('Edge/') > 0;
    return msie || ie11 || ie12;
});

Non risponde alla domanda poiché Edge non è IE. Inoltre Edge non è IE12. Quando viene rilasciato Edge basato su Chromium, è necessario aggiungere anche Chrome o Opera a questo elenco. (Qualunque cosa tu voglia ottenere da questo, sarebbe più facile rilevare Firefox allora)
hda

5

O questa versione davvero breve, restituisce true se il browser è Internet Explorer:

function isIe() {
    return window.navigator.userAgent.indexOf("MSIE ") > 0
        || !!navigator.userAgent.match(/Trident.*rv\:11\./);
}

4

Ancora un'altra funzione semplice (ma leggibile dall'uomo) per rilevare se il browser è IE o no (ignorando Edge, che non è affatto male):

function isIE() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf('MSIE '); // IE 10 or older
  var trident = ua.indexOf('Trident/'); //IE 11

  return (msie > 0 || trident > 0);
}

3

Se non si desidera utilizzare l'utenteagent, è possibile farlo anche solo per verificare se il browser è IE. Il codice commentato viene effettivamente eseguito nei browser IE e trasforma il "falso" in "vero".

var isIE = /*@cc_on!@*/false;
if(isIE){
    //The browser is IE.
}else{
    //The browser is NOT IE.
}   

1
IE11 non supporta la compilazione condizionale
Gabriel Llamas,

Ho appena provato questo e ha ancora funzionato. Sei sicuro che non lo supporti?
dev4life,

3

So che questa è una vecchia domanda, ma nel caso in cui qualcuno la incontri di nuovo e abbia problemi con il rilevamento di IE11, ecco una soluzione funzionante per tutte le versioni correnti di IE.

var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
    isIE = true;   
}

3

l'ho usato

function notIE(){
    var ua = window.navigator.userAgent;
    if (ua.indexOf('Edge/') > 0 || 
        ua.indexOf('Trident/') > 0 || 
        ua.indexOf('MSIE ') > 0){
       return false;
    }else{
        return true;                
    }
}

2

Molte risposte qui e vorrei aggiungere il mio contributo. Internet Explorer 11 era un tale asino riguardo a flexbox (vedi tutti i suoi problemi e incoerenze qui ) che avevo davvero bisogno di un modo semplice per verificare se un utente utilizza un browser IE (fino a 11 incluso) ma escludendo Edge, perché Edge è in realtà molto carino.

Sulla base delle risposte fornite qui, ho scritto una semplice funzione che restituisce una variabile booleana globale che è possibile utilizzare in seguito. È molto facile controllare IE.

var isIE;
(function() {
    var ua = window.navigator.userAgent,
        msie = ua.indexOf('MSIE '),
        trident = ua.indexOf('Trident/');

    isIE = (msie > -1 || trident > -1) ? true : false;
})();

if (isIE) {
    alert("I am an Internet Explorer!");
}

In questo modo devi solo cercare una volta e archiviare il risultato in una variabile, anziché dover recuperare il risultato su ogni chiamata di funzione. (Per quanto ne so non devi nemmeno aspettare che il documento sia pronto per eseguire questo codice poiché l'agente utente non è correlato al DOM.)


2

Prova questo se stai usando la versione jquery> = 1.9 ,

var browser;
jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+)/.exec(ua) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
        /(msie) ([\w.]+)/.exec(ua) || 
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
       /(Trident)[\/]([\w.]+)/.exec(ua) || [];

    return {
        browser: match[1] || "",
        version: match[2] || "0"
    };
};
// Don't clobber any existing jQuery.browser in case it's different
if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[matched.browser] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}

Se si utilizza jQuery versione <1.9 ($ .browser è stato rimosso in jQuery 1.9) utilizzare invece il codice seguente:

$('.myClass').on('click', function (event) {
    if ($.browser.msie) {
        alert($.browser.version);
    }
});

Grazie per questo. Purtroppo siamo ancora sulla versione 1.7.2 e non possiamo ancora cambiarlo.
user2571510

Per quanto posso vedere, questo non tiene conto di IE più recenti, basati sul motore Trident.
Bram Vanroy,

Aggiornato per gli ultimi IE basati su Trident
Rohan Kumar il

1

La soluzione di @ SpiderCode non funziona con IE 11. Ecco la migliore soluzione che ho usato d'ora in poi nel mio codice in cui ho bisogno del rilevamento del browser per funzionalità particolari.

IE11 non riporta più come MSIE, in base a questo elenco di modifiche, è intenzionale evitare il rilevamento errato.

Cosa puoi fare se vuoi davvero sapere che è IE è rilevare il Trident / stringa nell'agente utente se navigator.appName restituisce Netscape, qualcosa del tipo (il non testato);

Grazie a questa risposta

function isIE()
{
  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 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv == -1 ? false: true;
}

1

Di seguito ho trovato un modo elegante di farlo mentre cercavo su Google ---

/ detect IE
var IEversion = detectIE();

if (IEversion !== false) {
  document.getElementById('result').innerHTML = 'IE ' + IEversion;
} else {
  document.getElementById('result').innerHTML = 'NOT IE';
}

// 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';

  // IE 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 (IE 12+)
  // 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;
}

1
Questo è esattamente il codice della mia penna di CodePen , che fa parte della mia risposta a questa domanda . ;-)
Mario,

1
Sì, ho usato lo stesso ma lo stack-overflow non vuole condividere il link. aggiornerà il collegamento in riferimento qui in seguito. Grazie per l'ottimo lavoro Mario.
Rameshwar Vyevhare,

1

Aggiorna alla risposta SpiderCode per risolvere i problemi in cui la stringa "MSIE" restituisce -1 ma corrisponde a "Tridente". Restituiva NAN, ma ora restituisce 11 per quella versione di IE.

   function msieversion() {
       var ua = window.navigator.userAgent;
       var msie = ua.indexOf("MSIE ");
       if (msie > -1) {
           return ua.substring(msie + 5, ua.indexOf(".", msie));
       } else if (navigator.userAgent.match(/Trident.*rv\:11\./)) {
           return 11;
       } else {
           return false;
       }
    }

0

È possibile rilevare tutti gli Internet Explorer (Ultima versione testata 12).

<script>
    var $userAgent = '';
    if(/MSIE/i['test'](navigator['userAgent'])==true||/rv/i['test'](navigator['userAgent'])==true||/Edge/i['test'](navigator['userAgent'])==true){
       $userAgent='ie';
    } else {
       $userAgent='other';
    }

    alert($userAgent);
</script>

Vedi qui https://jsfiddle.net/v7npeLwe/


0
function msieversion() {
var ua = window.navigator.userAgent;
console.log(ua);
var msie = ua.indexOf("MSIE ");

if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11\./)) { 
    // If Internet Explorer, return version numbe
    // You can do what you want only in IE in here.
    var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
    if (isNaN(version_number)) {
        var rv_index=ua.indexOf("rv:");
        version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index)));
    }
    console.log(version_number);
} else {       
    //other browser   
    console.log('otherbrowser');
}
}

Dovresti vedere il risultato nella console, utilizza Chrome Inspect.


0

Ho inserito questo codice nella funzione documento pronto e si attiva solo in Internet Explorer. Testato in Internet Explorer 11.

var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
    //Do internet explorer exclusive behaviour here
}

0

Funziona solo con la versione IE 11.

var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));

console.log("version number",ie_version);


0

Funzione JavaScript per rilevare la versione di Internet Explorer o Edge

function ieVersion(uaString) {
  uaString = uaString || navigator.userAgent;
  var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
  if (match) return parseInt(match[2])
}

0

Necromancing.

Per non dipendere dalla stringa agente utente, basta controllare alcune proprietà:

if (document.documentMode) 
{
    console.log('Hello Microsoft IE User!');
}

if (!document.documentMode && window.msWriteProfilerMark) {
    console.log('Hello Microsoft Edge User!');
}

if (document.documentMode || window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User!');
}

if (window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User in fewer characters!');
}

Inoltre, questo rileva il nuovo Chredge (Anaheim):

function isEdg()
{ 

    for (var i = 0, u="Microsoft", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

E questo rileva il cromo:

function isChromium()
{ 

    for (var i = 0, u="Chromium", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

E questo Safari:

if(window.safari)
{
    console.log("Safari, yeah!");
}

-1

Prova a fare così

if ($.browser.msie && $.browser.version == 8) {
    //my stuff

}

jQuery lo ha deprecato in 1.3 e completamente rimosso in 1.9.
Geca,

-1

Penso che ti aiuterà qui

function checkIsIE() {
    var isIE = false;
    if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
        isIE = true;
    }
    if (isIE)  // If Internet Explorer, return version number
    {
        kendo.ui.Window.fn._keydown = function (originalFn) {
            var KEY_ESC = 27;
            return function (e) {
                if (e.which !== KEY_ESC) {
                    originalFn.call(this, e);
                }
            };
        }(kendo.ui.Window.fn._keydown);

        var windowBrowser = $("#windowBrowser").kendoWindow({
            modal: true,
            id: 'dialogBrowser',
            visible: false,
            width: "40%",
            title: "Thông báo",
            scrollable: false,
            resizable: false,
            deactivate: false,
            position: {
                top: 100,
                left: '30%'
            }
        }).data('kendoWindow');
        var html = '<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>';
        html += '<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />';
        html += '<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>';
        windowBrowser.content(html);
        windowBrowser.open();

        $("#windowBrowser").parent().find(".k-window-titlebar").remove();
    }
    else  // If another browser, return 0
    {
        return false;
    }
}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.