【问题标题】:Ext.isIE return false in IE 11Ext.isIE 在 IE 11 中返回 false
【发布时间】:2014-02-19 13:17:43
【问题描述】:

当我尝试在 IE11 中使用 Ext.isIE 时,我得到 false 返回值。然后在调试我的代码期间,我看到我收到以下错误: JavaScript 错误 - 消息:无效参数。, 我的 extjs 的版本是:4,2

【问题讨论】:

  • 当我读到这个问题时,我以为 IE 又做了一次......哈哈!

标签: extjs extjs4.2


【解决方案1】:

在 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/),

【讨论】:

    【解决方案2】:

    很简单:

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

    如果是 IE11 浏览器将返回 true。

    【讨论】:

      【解决方案3】:

      这对我有用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        相关资源
        最近更新 更多