[英]Polyfill for attachEvent removing dhtmlx attachEvent function
我正在为我们的旧产品添加 chrome 支持(ie8 支持),问题是我为 attachEvent 添加了 polyfill
if (!isIE() && Object.attachEvent == null) {
Object.defineProperty(Object.prototype, 'attachEvent', {
value: function(event, func) {
if ('string' !== typeof event || event.indexOf('on') !== 0) {
return;
}
this.addEventListener(event.substring(2), func, false);
},
enumerable: false
});
}
但是我们使用的是 dhtmlx 3rd 方库,它使用 attachEvent function 管理事件,所以我的 polyfill 覆盖了这个 function,是什么导致 dhtmlx 功能缺失。
任何想法我该如何解决这个问题? 我想填充 attachEvent 但不覆盖 dhtmlx 的 attachEvent 谢谢!
无需检查IsIE()
... 因为无论如何只有 IE 使用非标准的attachEvent
对于其他浏览器,您可以填充EventTarget.prototype.attachEvent
- 因为无论如何这是定义addEventListener
的地方
if (EventTarget.prototype.attachEvent == null) {
Object.defineProperty(EventTarget.prototype, 'attachEvent', {
value: function(event, func) {
if ('string' !== typeof event || event.indexOf('on') !== 0) {
return;
}
this.addEventListener(event.substring(2), func, false);
},
enumerable: false
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.