用于删除 dhtmlx attachEvent 函数的 attachEvent 的 Polyfill
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 第 3 方库,它使用 attachEvent 函数管理事件,
所以我的 polyfill 覆盖了这个函数,这使得 dhtmlx 无法正常运行。
有什么办法可以解决这个问题吗?
我想填充 attachEvent 但不想覆盖 dhtmlx 的 attachEvent
谢谢!
无需检查 IsIE()
... 因为只有 IE 使用非标准的 attachEvent
无论如何
对于其他浏览器,您可以 polyfill 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
});
}
我正在添加 chrome 对我们旧产品的支持(ie8 支持), 问题是我为 attachEvent
添加了 polyfillif (!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 第 3 方库,它使用 attachEvent 函数管理事件, 所以我的 polyfill 覆盖了这个函数,这使得 dhtmlx 无法正常运行。
有什么办法可以解决这个问题吗? 我想填充 attachEvent 但不想覆盖 dhtmlx 的 attachEvent 谢谢!
无需检查 IsIE()
... 因为只有 IE 使用非标准的 attachEvent
无论如何
对于其他浏览器,您可以 polyfill 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
});
}