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,detachEventJS工具类代码:
[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
相关文章推荐
- js事件监听(考虑兼容性)
- JS之 DOM事件监听的兼容性问题 IE 和 FF
- js DOM事件监听与解除的兼容性写法
- JS的事件监听机制
- js绑定事件方法:addEventListener与attachEvent的不同浏览器的兼容性写法
- js事件绑定、事件监听、事件委托
- [No00006A]Js的addEventListener()及attachEvent()区别分析【js中的事件监听】
- JS 事件绑定、事件监听、事件委托详细介绍
- Node.js-事件模块(events)之监听方式
- JS的事件监听机制
- JS,JQ及时监听input值的变化,MUI的input搜索框里的清除按钮的点击监听事件
- JS键盘监听事件的键盘码
- JS监听手机端浏览器的后退按钮的事件方法
- JS监听窗体关闭事件
- 使用JS监听键盘两个组合键触发的事件
- js滚轮事件兼容性问题需要注意哪些
- JS监听页面刷新或关闭事件
- js 事件监听 兼容浏览器
- JS事件监听的添加方法
- js事件监听