javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)


Posted in Javascript onAugust 22, 2012
var EventUtil={ //跨浏览器处理程序---创建方法 
addHandler:function(element,type,handler){ 
if(element.addEventListener){ 
element.addEventListneter(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.removeEventListneter(type,handler,false); 
}else if(element.detachEvent){ 
element.detachEvent("on"+type,handler); 
}else{ 
element["on"+type]=handler; 
} 
} 
getEvent:function(event){ //跨浏览器事件对象---返回event对象的引用 
return event?event:window.event; 
} 
getTarget:function(event){ //跨浏览器事件对象---返回事件的目标 
return event.target||event.srcElement; 
} 
preventDefault:function(event){ //跨浏览器事件对象---取消默认事件 
if(event.preventDefault){ 
event.preventDefault(); 
}else{ 
event.returnValue=false; 
} 
} 
stoppropagation:function(event){ //跨浏览器事件对象---阻止事件流 
if(event.stoppropagation){ 
event.stoppropagation(); 
}else{ 
event.canceBubble=false; 
} 
} 
getRelatedTarget:function(event){ //跨浏览器获取相关元素 
if(event.relatedTarget){ 
return event.relatedTarget; 
}else if(event.toElement){ 
return envent.toElement; 
}else if(event.fromElement){ 
return event.fromElement; 
}else{ 
return null; 
} 
} 
getButton:function(event){ //鼠标事件的button属性检测 
if(document.implementation.hasFeature("MouseEvent","2.0")){ 
return event.button; 
}else{ 
switch(event.button){ 
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){ //跨浏览器字符编码---charCode属性检测 
if(typeof event,charCode=="number"){ 
return event.charCode; 
}else{ 
return event.keyCode; 
} 
} 
}

事件委托:事件处理程序过多的解决方案,减少内存并且提高性能;
模拟事件:这个比较复杂,要慢慢研究;
Javascript 相关文章推荐
文本框的字数限制功能jquery插件
Nov 24 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
jQuery 追加元素的方法如append、prepend、before
Jan 16 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
Mar 02 Javascript
js图片轮播效果实现代码
Apr 18 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
微信小程序实现留言板
Oct 31 Javascript
JavaScript组合继承详解
Nov 07 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 #Javascript
javascript动态加载三
Aug 22 #Javascript
javascript动态加载二
Aug 22 #Javascript
javascript动态加载实现方法一
Aug 22 #Javascript
原生js写的放大镜效果
Aug 22 #Javascript
window.open不被拦截的实现代码
Aug 22 #Javascript
EASYUI TREEGRID异步加载数据实现方法
Aug 22 #Javascript
You might like
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
DOM 事件流详解
2015/01/20 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
js获取腾讯视频ID的方法
2016/10/03 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
Pytorch之contiguous的用法
2019/12/31 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
房地产还款计划书
2014/01/10 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
市场开发计划书
2014/05/07 职场文书
通知怎么写?
2019/04/17 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
python之django路由和视图案例教程
2021/07/26 Python