簡體   English   中英

用於 attachEvent 的 Polyfill 刪除 dhtmlx attachEvent function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM