5

Ho bisogno di rilevare con un solo semplice javascript (non quadri) quando il browser è IE10, nonostante l'impostazione della modalità browser.Come posso rilevare IE10 da JS quando la modalità browser è IE9?

Alcuni commenti: - Ho bisogno di rilevare il browser, non è un'opzione per rilevare solo le funzioni poiché lo scopo è quello di attenuare un bug del browser. - ho cercato modi più comuni (come stringa o funzione di rilevamento UA) senza successo, quando passo la modalità browser per IE9 ogni aspetto che potrebbe suggerire di essere in IE10 appena svanisce.

+0

che cosa è esattamente il "bug del browser" si sta cercando di mitigare? – Ian

+0

Non sono sicuro che la modifica della modalità browser cambierà le variabili interne, ma potresti usare la compilazione condizionale e controllare che "@ _jscript_version" inizi con "10" (versione principale). – Ian

+0

In alcuni scenari i pezzi flash non coprono l'intera area del contenitore, sono 1px più stretti. Puoi elaborare la tua soluzione, non puzza di essere una soluzione js. – gztomas

risposta

12

Se si desidera rilevare il browser si sta lavorando, IE ha una caratteristica speciale, chiamato compilazione condizionale - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

Per ottenere la versione, utilizza @_jscript_version. Così in Javascript, userei:

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

non ho IE10, ma durante il test con IE9, sembra funzionare. Se cambio la modalità browser a 7 o 8, @_jscript_version ha il vero navigatore versione JScript (rimane come 9 nel mio caso).

Per visualizzare l'elenco delle versioni JScript, è possibile vederli qui - http://en.wikipedia.org/wiki/JScript#Versions. Essa non elenca IE10, ma mi piacerebbe pensare che è 10. Prima di IE9, hanno usato i numeri in contrasto con la versione del browser, ma sono forse sulla strada giusta in quanto 9. Dovrete vedere cosa @_jscript_version è per impostazione predefinita per 10 , ma suppongo che inizi con "10" e possibilmente abbia una versione minore.


UPDATE:

Per evitare minimizzazione dei commenti, si può 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 di Versioni di JScript).

Problemi correlati