首页 > 代码库 > ext 3.2 tree 在IE10中点击事件失效的bug

ext 3.2 tree 在IE10中点击事件失效的bug

ext3.2 中的tree在IE中进行兼容性测试,遇到IE10时,无法点击,其他版本的IE(7、8、9、11)均正常。此bug是由于ext-all.js中的getAttributeNS方法不能兼容IE10出错引起的,下载了ext3.4,这里的getAttributeNS 被重写了,将3.4中的方法写入3.2中的ext-all.js文件中,IE10中tree恢复正常。

修改前:

getAttributeNS: Ext.isIE ?        function(s, q) {            var t = this.dom,            r = typeof t[s + ":" + q];            if (!Ext.isEmpty(r) && r != "unknown") {                return t[s + ":" + q]            }            return t[q]        }: function(r, q) {            var s = this.dom;            return s.getAttributeNS(r, q) || s.getAttribute(r + ":" + q) || s.getAttribute(q) || s[q]        }

修改后:

getAttributeNS: function(m, l) {            return this.getAttribute(l, m)        },        getAttribute: (function() {            var p = document.createElement("table"),            o = false,            m = "getAttribute" in p,            l = /undefined|unknown/;            if (m) {                try {                    p.getAttribute("ext:qtip")                } catch(n) {                    o = true                }                return function(q, s) {                    var r = this.dom,                    t;                    if (r.getAttributeNS) {                        t = r.getAttributeNS(s, q) || null                    }                    if (t == null) {                        if (s) {                            if (o && r.tagName.toUpperCase() == "TABLE") {                                try {                                    t = r.getAttribute(s + ":" + q)                                } catch(u) {                                    t = ""                                }                            } else {                                t = r.getAttribute(s + ":" + q)                            }                        } else {                            t = r.getAttribute(q) || r[q]                        }                    }                    return t || ""                }            } else {                return function(q, s) {                    var r = this.om,                    u, t;                    if (s) {                        t = r[s + ":" + q];                        u = l.test(typeof t) ? undefined: t                    } else {                        u = r[q]                    }                    return u || ""                }            }            p = null        })()

修改前效果:

修改后效果: