2014-02-19 4 views
7

Wenn ich versuche, Ext.isIE in IE11 zu verwenden, bekomme ich den Rückgabewert false. Und dann während des Debug meinen Code Ich sehe, dass ich die folgende Fehlermeldung erhalten: JavaScript-Fehler - Msg:. Invalid argument, meine extjs Version ist: 4,2Ext.isIE gibt false in IE 11

+0

Als ich die Frage gelesen habe, dachte ich, IE hat es wieder getan ... LOL! –

Antwort

11

IE 11 nicht offiziell vor unterstützt ExtJS 4.2. 2 (siehe Eigenschaft isIE11). Microsoft hat den MSIE-Teil aus dem User-Agent des IE11 entfernt (siehe here), weshalb er mit ExtJS 4.2.1 und niedriger nicht funktioniert.

Aus dem Quellcode für ExtJS 4.2.1:

isIE = !isOpera && check(/msie/), 
isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7), 
isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8), 
isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9), 
isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10), 
isIE6 = isIE && check(/msie 6/), 

und für ExtJS 4.2.2:

isIE = !isOpera && (check(/msie/) || check(/trident/)), 
isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7), 
isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8), 
isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9), 
isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10), 
isIE11 = isIE && ((check(/trident\/7\.0/) && docMode != 7 && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 11), 
isIE6 = isIE && check(/msie 6/), 
1

Dies funktioniert für mich:

var isIE11 = = window.location.hash !! window.MSInputMethodContext;

1

Es ist sehr einfach:

navigator.userAgent.toLowerCase().lastIndexOf('rv:11') > -1 

wahr zurück, wenn es sich um ein IE11 Browser ist.