原生js屏蔽event兼容性


~(function() {
    // array pollyfill
    Array.prototype.forEach = Array.prototype.forEach || function(fn) {
        var self = this, el;
        for (var i = 0, len = self.length; i < len; i++) {
            el = self[i];
            fn(el, i);
        }
    }
})();



~(function(){
    // event pollyfill
    var HTMLElement = HTMLElement || Element;
    var addEvent = HTMLElement.prototype.addEventListener || HTMLElement.prototype.attachEvent;
    var removeEvent = HTMLElement.prototype.removeEventListener || HTMLElement.prototype.detachEvent;
    
    HTMLElement.prototype.addEventListener = function (type, fn) {
        var self = this, events = self.events = self.events || {};
        type = (HTMLElement.prototype.attachEvent ? 'on' : '') + type;

        fn._wrap = function(e) {
            e = e || window.event;
            e.target = e.target || e.srcElement;
            e.preventDefault = e.preventDefault || function() {
                e.returnValue=false;
            };
            e.stopPropagation = e.stopPropagation || function() {
                e.cancelBubble = true;
            }
            fn.call(self, e);
        }

        addEvent.call(self, type, fn._wrap);

        events[type] = events[type] || [];
        events[type].push(fn);
    }

    HTMLElement.prototype.removeEventListener = function(type, fn) {
        var self = this, events = self.events;
        type = (HTMLElement.prototype.attachEvent ? 'on' : '') + type;
        fn && removeEvent.call(this, type, fn._wrap);
        !fn && events[type] && events[type].forEach(function(fn) {
            removeEvent.call(self, type, fn._wrap);
        })
    }
})();


document.documentElement.addEventListener('click', function(e) {
    console.log(1);
});

document.documentElement.addEventListener('click', function(e) {
    console.log(2);
});


document.documentElement.removeEventListener('click');


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容