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 相关文章推荐
本地对象Array的原型扩展实现代码
Dec 04 Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
解决node.js安装包失败的几种方法
Sep 02 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
AngularJS中控制器函数的定义与使用方法示例
Oct 10 Javascript
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 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
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
简述数据库的设计过程
2015/06/22 面试题
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
数控专业毕业生求职信
2014/06/12 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2015年保安个人工作总结
2015/04/02 职场文书