JavaScript事件基础知识总结【思维导图】

另外附上来自Nicholas C.Zakas《JavaScript高级程序设计 第3版》中的跨浏览器兼容EventUtil对象。
var EventUtil = {
//注册事件
addHandler: function(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
} else if (element.attachEvent){
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},
//移除事件
removeHandler: function(element, type, handler){
if (element.removeEventListener){
element.removeEventListener(type, handler, false);
} else if (element.detachEvent){
element.detachEvent("on" + type, handler);
} else {
element["on" + type] = null;
}
},
//获取事件
getEvent: function(event){
return event ? event : window.event;
},
//获取事件名称
getTarget: function(event){
return event.target || event.srcElement;
},
//获取鼠标键
getButton: function(event){
//DOM2中检测是否有MouseEvents模块
if (document.implementation.hasFeature("MouseEvents", "2.0")){
return event.button;
// var k = event.button;
// switch(k){
// case 0:
// return "0:表示左键";
// case 1:
// return "1:表示中键";
// case 2:
// return "2:表示右键";
// }
//IE6,7,8 左键:1,中键:4,右键:2;
//Chrome,FF,IE9+ 左键:0,中键:1,右键:2;
} else {
switch(event.button){ //IE下
case 0:
case 1: //左键
case 3: //左右键
case 5: //左中键
case 7: //左右中
return 0; //左键
case 2: //右键
case 6: //右中
return 2; //右键
case 4: return 1; //中键
}
}
},
//获得按键编码值
getCharCode: function(event){
if (typeof event.charCode == "number"){
return event.charCode;
} else {
return event.keyCode;
}
},
/*event对象的relatedTarget属性提供了相关元素的信息,这个属性只对于mouseover和mouseout事件才包含值;
*对于其他事件,这个属性的值是null。
*IE不支持relatedTarget属性,但提供了保存着同样信息的不同属性。
*在mouseover事件触发时,IE的fromElement属性中保存率相关元素;
*在mouseout事件触发时,IE的toElement属性中保存着相关元素。
*/
getRelatedTarget: function(event){
if (event.relatedTarget){
return event.relatedTarget;
} else if (event.toElement){
return event.toElement;
} else if (event.fromElement){
return event.fromElement;
} else {
return null;
}
},
//获取鼠标滚轮mousewheel事件
getWheelDelta: function(event){
if (event.wheelDelta){
return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);
} else {
return -event.detail * 40;
}
},
//取消事件的默认行为,如果cancelable是true,则可以使用这个方法;
//如:点击超链接时阻止其访问herf属性实现跳转
preventDefault: function(event){
if (event.preventDefault){
event.preventDefault();
} else {
event.returnValue = false;
}
},
//取消事件的进一步捕获或冒泡。如果bubbles为true则可以使用这个方法;
stopPropagation: function(event){
if (event.stopPropagation){
event.stopPropagation();
} else {
event.cancelBubble = true;
}
},
//获取剪切板文本
getClipboardText: function(event){
var clipboardData = (event.clipboardData || window.clipboardData);
return clipboardData.getData("text");
},
//设置剪切板文本
setClipboardText: function(event, value){
if (event.clipboardData){
event.clipboardData.setData("text/plain", value);
} else if (window.clipboardData){
window.clipboardData.setData("text", value);
}
}
};
JavaScript事件基础知识总结【思维导图】的更多相关文章
- Java基础知识学习思维导图
- Java知识汇总——思维导图
转载:https://www.cnblogs.com/java1024/p/8757952.html Java知识点汇总,从基础到常用的API.还有常用的集合类,总结的很详细.图片是从论坛里面找到的, ...
- Java知识体系思维导图
Java知识体系,为方便预览,将思维导图上传至印象笔记,博客园直接上传图片受限于图片大小,暂时接触这么多,待以后丰富 https://app.yinxiang.com/shard/s24/nl/272 ...
- 2.MVC基础-Model概述(思维导图)
已思维导图形式,便于记忆和补充
- JS事件学习笔记(思维导图)
导图
- Python知识体系思维导图:
基础知识 数据类型 1.序列 2.字符串 3.列表和元组 4.字典和集合 循环 & 判断
- JavaScript 中的内存和性能、模拟事件(读书笔记思维导图)
由于事件处理程序可以为现代 Web 应用程序提供交互能力,因此许多开发人员会不分青红皂白地向页面中添加大量的处理程序.在 JavaScript 中,添加到页面上的事件处理程序数量将直接关系到页面的整体 ...
- Mysql数据库基础_复习思维导图
Mysql复习的一个小总结,用xmind写的.(字数没有都不给我发博客) 下面是一些备注 子查询 MySQL子查询称为内部查询,而包含子查询的查询称为外部查询. 子查询可以在使用表达式的任何地方使用, ...
- JQuery基本知识框架思维导图(上)
一:认识jQuery 1.window.onload与$(document).ready()的对比 2.jQuery代码风格(1:链式代码风格2:位代码添加注释) 3.jQuery对象和DOM对象(1 ...
随机推荐
- 【P1326】超级教主
DP优化 原题: LHX教主很能跳,因为Orz他的人太多了.教主跳需要消耗能量,每跳1米就会消耗1点能量,如果教主有很多能量就能跳很高.教主为了收集能量,来到了一个神秘的地方,这个地方凡人是进不来的. ...
- Flash pixel Bender学习笔记
pixel Bender是指用来创建,编译,测试和导出pixel shader,用于各种flash产品的一个IDE. Pixel Bender是Adobe推出的一个高性能的图像视频处理技术.它能跨平台 ...
- (转)The 9 Deep Learning Papers You Need To Know About (Understanding CNNs Part 3)
Adit Deshpande CS Undergrad at UCLA ('19) Blog About The 9 Deep Learning Papers You Need To Know Abo ...
- Questions?
http://www.datastax.com/wp-content/themes/datastax-2014-08/files/NoSQL_Benchmarks_EndPoint.pdf http: ...
- 事件、委托、委托方法的总结(使用EventHandler<>)
在C#中,定义事件.委托.委托方法可以使用类库内的EventHandler泛型委托来定义事件.并根据该泛型委托定义实现方法: 同样您也可以自定义委托 来定义事件以及 根据自定义的委托来定义实现事件的方 ...
- unity, 非public变量需要加[SerializeField]才能序列化
非public变量需要加[SerializeField]才能序列化 例如: MonoBehaviour中: [SerializeField] private float m_xxx; 在相应的Cust ...
- centos 安装 pip
下载文件 wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 执行安装 python get-pip.py
- JS动态广告浏览
<script language="JavaScript"> function addEventSimple(obj,evt,fn){ if(obj.addEventL ...
- JQuery Pagenation 知识点整理——arguments,callee,caller,apply应用(20150517)(转)
arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n]参数function :选项.当前正在执行的 Function 对象的名字. n :选 ...
- jquery操作html data-* 属性的坑