【发布时间】:2014-02-19 13:17:43
【问题描述】:
当我尝试在 IE11 中使用 Ext.isIE 时,我得到 false 返回值。然后在调试我的代码期间,我看到我收到以下错误: JavaScript 错误 - 消息:无效参数。, 我的 extjs 的版本是:4,2
【问题讨论】:
-
当我读到这个问题时,我以为 IE 又做了一次......哈哈!
当我尝试在 IE11 中使用 Ext.isIE 时,我得到 false 返回值。然后在调试我的代码期间,我看到我收到以下错误: JavaScript 错误 - 消息:无效参数。, 我的 extjs 的版本是:4,2
【问题讨论】:
在 ExtJS 4.2.2 之前,IE 11 不受官方支持(参见属性 isIE11)。 Microsoft 从 IE11 的用户代理中删除了 MSIE 部分(请参阅 here),这就是它不适用于 ExtJS 4.2.1 及更低版本的原因。
来自源代码,对于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/),
对于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/),
【讨论】:
很简单:
navigator.userAgent.toLowerCase().lastIndexOf('rv:11') > -1
如果是 IE11 浏览器将返回 true。
【讨论】:
这对我有用:
var isIE11 = window.location.hash = !!window.MSInputMethodContext;
【讨论】: