js事件监听/鼠标滚轮/行为/冒泡/键盘的兼容性写法
addEvent:function(el,type,fn,capture) {
if (window.addEventListener) {
if (type === "mousewheel" && document.mozHidden !== undefined) {
type = "DOMMouseScroll";
}
el.addEventListener(type, fn, !!capture);
} else if (window.attachEvent) {
el.attachEvent("on" + type, fn);
}
},
removeEvent:function(el,type,fn,capture) {
if (window.removeEventListener) {
if (type === "mousewheel" && document.mozHidden !== undefined) {
type = "DOMMouseScroll";
}
el.removeEventListener(type, fn, !!capture);
} else if (window.detachEvent) {
el.detachEvent("on" + type, fn);
}
},
//对鼠标滚轮、行为、冒泡以及键盘做的兼容性处理
eventCompat:function(e) {
e || (e = root.event);
var type = e.type;
if (type == 'DOMMouseScroll' || type == 'mousewheel') {
e.delta = (e.wheelDelta) ? -e.wheelDelta / 120 : (e.detail || 0) / 3;
}
if (e.srcElement && !e.target) {
e.target = e.srcElement;
}
//阻止默认行为
if (!e.preventDefault) {
e.preventDefault = function() {
e.returnValue = false;
};
}
//阻止冒泡
if (!e.stopPropagation && e.cancelBubble !== undefined) {
e.stopPropagation = function() {
e.cancelBubble = true;
};
}
//键盘的兼容性处理
if(e.which == null){
e.which = e.charCode != null ? e.charCode : e.keyCode;
}
/*
......其他一些兼容性处理 */
return e;
},
bindAsEventListener:function(context, fun) {
var self = this;
return function(e) {
return fun.call(context, self.eventCompat(e));
}
}
//调用:
var dom = document.getElementById('btn');
var object = {
clickCtrl:function(e){
alert(e);
}
};
addEvent(dom, "click", function(){
alert(dom.id);
});
addEvent(dom, "mousedown",
bindAsEventListener(object, function(e){
object.ClickCtrl(e);
}));
js事件监听/鼠标滚轮/行为/冒泡/键盘的兼容性写法的更多相关文章
- js 事件监听 冒泡事件
js 事件监听 冒泡事件 的取消 [自己写框架时,才有可能用到] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitiona ...
- js事件监听机制(事件捕获)总结
在前端开发过程中我们经常会遇到给页面元素添加事件的问题,添加事件的js方法也很多,有直接加到页面结构上的,有使用一些js事件监听的方法,由于各个浏览器对事件冒泡事件监听的机制不同,le浏览器只有事件冒 ...
- js事件监听机制(事件捕获)
在前端开发过程中我们经常会遇到给页面元素添加事件的问题,添加事件的js方法也很多,有直接加到页面结构上的,有使用一些js事件监听的方法,由于各个浏览器对事件冒泡事件监听的机制不同,le浏览器只有事件冒 ...
- java 事件监听 - 鼠标
java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...
- js 事件监听 兼容浏览器
js 事件监听 兼容浏览器 ie 用 attachEvent w3c(firefox/chrome) 用 addEventListener 删除事件监听 ie 用 detachEven ...
- javascript的事件监听与捕获和冒泡
在前端开发中,我们经常需要对某些事件进行监听.这样只要在指定的元素上触发了该事件,就会执行一个回调来进行相关的操作. 而js中事件监听方法总共有三种,分别如下所示: element.addEventL ...
- js 事件监听封装
var eventUtil={//添加句柄 //element,节点 //type,事件类型 //handler,函数 addHandler:function(element,type,handler ...
- JavaScript的事件监听、捕获和冒泡
在前端开发中,我们经常需要对某些事件进行监听.这样只要在指定的元素上触发了该事件,就会执行一个回调函数来进行相关的操作. 而JavaScript中事件监听的方法总共有三种,分别如下: element. ...
- js事件监听-addEventListener (w3c标准) 和 attachEvent(ie)
研究了一个小时,没看懂这两个属性 window.onload = function(){ var oDiv = document.getElementById("J_myDiv") ...
随机推荐
- python 列表转换成字符串
用字符串的 join 方法: li = ['a', 'b', 'c', 'd'] s = ''.join(li) print(s) abcd 用字符串的占位符替换 li = ['a', 'b', 'c ...
- Leetcode Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point t ...
- jQuery对数据和对象的操作
<script type="text/javascript" src="jquery-1.8.2.min.js"></script> & ...
- 【新手学Python】一、基础篇
由于以前处理数据用Matlab和C,最近要处理大量文本文件,用C写实在是太繁琐,鉴于Python的强大文本处理能力,以及其在Deep Learning上有着很大优势,本人打算从即日起学习Python, ...
- easy ui插件
简介: easy UI是类似于jQuery UI的插件库 注意:多脚本同时使用时,注意脚本冲突问题. 常用插件: 1.tree插件(tree插件实现动态树形菜单) 2.datagrid插件(datag ...
- List转换成json格式字符串,json格式字符串转换成list
一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...
- 使用CallableStatement的用法
package Test; import java.sql.*; public class Test7 { public static void main(String[] args) { Conne ...
- Google Gson 使用简介
http://www.cnblogs.com/haippy/archive/2012/05/20/2509329.html
- 浅析Java中CountDownLatch用法
http://www.cnblogs.com/yezhenhan/archive/2012/01/07/2315652.html
- 几何服务,cut功能测试
关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...