【发布时间】:2020-01-23 03:10:34
【问题描述】:
我正在为我们的旧产品添加 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 函数管理事件, 所以我的 polyfill 覆盖了这个函数,是什么让 dhtmlx 失去了功能。
任何想法我该如何解决这个问题? 我想填充 attachEvent 但不覆盖 dhtmlx 的 attachEvent 谢谢!
【问题讨论】:
-
为什么
dhtmlx自称是JavaScript/HTML5 UI Component Libraries,却用attachEvent函数管理事件 -
他们通过函数名称“attachEven”管理事件的问题,它唯一的函数名称,用于管理事件的包装函数,但实际上并未弃用“attachEvent”
-
那么问题是什么?如果“他们”有一个名为
attachEvent的函数,那么它不会跨浏览器工作吗,因为“他们”声称是一个现代 UI 组件库?为什么你只在非 IE 浏览器中尝试填充attachEvent方法?
标签: javascript internet-explorer dhtml