您的位置:首页 > Web前端 > JavaScript

js事件监听(考虑兼容性)

2018-01-23 10:50 246 查看

说明:

Internet Explorer 8 及更早IE版本不支持 addEventListener() 方法,Opera 7.0 及 Opera 更早版本也不支持。 但是,对于这些不支持该函数的浏览器,你可以使用 attachEvent() 方法来添加事件句柄。Internet Explorer 8 及更早IE版本不支持 removeEventListener() 方法,Opera 7.0 及 Opera 更早版本也不支持。 但是,对于这些不支持该函数的浏览器,你可以使用 detachEvent() 方法来移除由 attachEvent() 方法添加的事件句柄 。(以上摘自菜鸟教程)。

关键字:

addEventListener,attachEvent,removeEventListener,detachEvent

JS工具类代码:

[javascript] view plain copy$(function() {  
    //添加,移除监听事件,考虑兼容性  
    $.fn.extend({  
        /** 
         * 参考原生JavaScript添加事件监听, 
         *  element.addEventListener(event, function, useCapture) 
         * @param {Object} type  必须。事件名 
         * @param {Object} handle  必须。指定要事件触发时执行的函数  
         * @param {Object} bool  可选。布尔值,指定事件是否在捕获或冒泡阶段执行 
         */  
        addEvent: function(type, handle, bool) {  
            var el, thisLen = this.length;  
            bool ? bool = bool : bool = false; //bool  
            if(thisLen == 1) {  
                el = this[0]; //jquery对象转成 js对象  
                el.addEventListener ? el.addEventListener(type, handle, bool) :  
                    el.attachEvent('on' + type, handle);  
            } else {  
                for(var i = 0; i < thisLen; i++) {  
                    el = this[i];  
                    el.addEventListener ? el.addEventListener(type, handle, bool) :  
                        el.attachEvent('on' + type, handle);  
                }  
            }  
        },  
          
            /** 
         * 参考原生JavaScript移除事件监听, 
         *  element.removeEventListener(event, function, useCapture) 
         * @param {Object} type  必须。事件名 
         * @param {Object} handle  必须。指定要移除的函数 
         * @param {Object} bool  可选。布尔值,指定事件是否在捕获或冒泡阶段执行 
         */  
        removeEvent:function(type,handle,bool){  
            var el, thisLen = this.length;  
            console.log(this)  
            bool ? bool = bool : bool = false; //bool  
            if(thisLen == 1) {  
                el = this[0]; //jquery对象转成 js对象  
                console.log(el.removeEventListener)  
                el.removeEventListener ? el.removeEventListener(type, handle, bool) :  
                    el.detachEvent('on' + type, handle);  
            } else {  
                for(var i = 0; i < thisLen; i++) {  
                    el = this[i];  
                    el.removeEventListener ? el.removeEventListener(type, handle, bool) :  
                        el.detachEvent('on' + type, handle);  
                }  
            }  
        }  
    })  
})  

调用:

[javascript] view plain copy$('#main').addEvent('touchstart',start);  
//跳转某页面
$("#main").addEvent('click',function(e){window.location.href='a.html';event.stopPropagation();},true);

如果还是不懂可参考此文章:https://www.cnblogs.com/cnblogs-jcy/p/6038965.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: