2013-04-21 7 views
40

Come posso visualizzare una finestra di messaggio sul caricamento della pagina se l'utente utilizza IE 10?Controllo per IE 10

function ieMessage() { 
    alert("Hello you are using I.E.10"); 
} 

La mia pagina Web è un facelet JSF (XHTML).

+6

Perché avete bisogno di fare questo? – Ryan

+0

progetto per la scuola, ottenuto per visualizzare messaggi in diversi browser :) – user2292674

+0

[Rilevamento del browser in javascript?] (Http://stackoverflow.com/questions/2400935/browser-detection-in-javascript). – Vucko

risposta

54

Il vero wa y per rilevare questo, senza i commenti condizionali e senza User Agent sniffing è con la compilazione condizionale:

<script type="text/javascript"> 
    var isIE10 = false; 
    /*@cc_on 
     if (/^10/.test(@_jscript_version)) { 
      isIE10 = true; 
     } 
    @*/ 
    console.log(isIE10); 
</script> 

Dopo aver eseguito questo codice, è possibile utilizzare i seguenti qualsiasi momento dopo:

if (isIE10) { 
    // Using Internet Explorer 10 
} 

Riferimento: How can I detect IE10 from JS when browser mode is IE9?


UPDATE:

Per evitare minimizzazione dei commenti, è possibile usare qualcosa come:

var IE = (function() { 
    "use strict"; 

    var ret, isTheBrowser, 
     actualVersion, 
     jscriptMap, jscriptVersion; 

    isTheBrowser = false; 
    jscriptMap = { 
     "5.5": "5.5", 
     "5.6": "6", 
     "5.7": "7", 
     "5.8": "8", 
     "9": "9", 
     "10": "10" 
    }; 
    jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")(); 

    if (jscriptVersion !== undefined) { 
     isTheBrowser = true; 
     actualVersion = jscriptMap[jscriptVersion]; 
    } 

    ret = { 
     isTheBrowser: isTheBrowser, 
     actualVersion: actualVersion 
    }; 

    return ret; 
}()); 

E accedere alle proprietà come IE.isTheBrowser e IE.actualVersion (che viene tradotto da valori interni delle versioni JScript).

+0

Grazie mille funziona perfettamente – user2292674

+1

Sarebbe molto più fastidioso provarlo in diverse versioni di IE, comunque. –

+0

@AlexW Non proprio. È abbastanza facile da modificare per ripristinare la versione di IE (anziché true/false in base a una determinata versione) ed è effettivamente affidabile. Quindi preferirei usare qualcosa che funzioni e non possa essere falsificato di qualcosa che possa cambiare ed essere cambiato – Ian

27

In generale, la pratica dello User Agent sniffing e compilation/commenti condizionali è meglio evitare. È molto meglio usare feature detection, graceful degradation e progressive enhancement. Tuttavia, per i pochi casi limite in cui è più conveniente per gli sviluppatori di rilevare la versione del browser, è possibile utilizzare i seguenti frammenti di codice:

Questa if dichiarazione verrà eseguito solo su IE 10

// IF THE BROWSER IS INTERNET EXPLORER 10 
if (navigator.appVersion.indexOf("MSIE 10") !== -1) 
{ 
    window.alert('This is IE 10'); 
} 

Questo if dichiarazione sarà eseguire solo su IE 11

// IF THE BROWSER IS INTERNET EXPLORER 11 
var UAString = navigator.userAgent; 
if (UAString.indexOf("Trident") !== -1 && UAString.indexOf("rv:11") !== -1) 
{ 
    window.alert('This is IE 11'); 
} 

http://jsfiddle.net/Qz97n/

+0

Grazie proverò ora :) – user2292674

+0

Grazie mille funziona perfettamente – user2292674

+1

Codice incredibile! Ho cercato ore per fare questo. +1 per includere anche IE 11;) – www139

20

Ecco un metodo per ottenere la corrente IE o la versione di IE:

function IE(v) { 
    return RegExp('msie' + (!isNaN(v)?('\\s'+v):''), 'i').test(navigator.userAgent); 
} 

Ecco come si può utilizzare:

if(IE()) alert('Internet Explorer!'); 
if(IE(10)) alert('Internet Explorer 10!'); 
+0

da dove viene la v? – Rhyso

+1

@Rhyso è il parametro che si passa alla funzione - in questo caso il numero 10. –

+0

scusa avrei dovuto guardare l'esempio di utilizzo :) – Rhyso