JavaScript让IE浏览器event对象符合W3C DOM标准


Posted in Javascript onNovember 24, 2009
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>无标题文档</title> 
</head> 
<body> 
<input id="butt" type="button" value="提交" /> 
</body> 
<script type="text/javascript"> 
var EventUtil = {}; 
EventUtil.formatEvent = function(oEvent){ 
if(window.ActiveXObject){ 
//W3C event的charCode属性,按下的按键的Unicode值 
oEvent.charCode = (oEvent.type == 'keypress') ? oEvent.keyCode : 0; 
//W3C event的eventPhase属性 
//事件的阶段,可能有以下的值中的一个: 
// 0 - 捕获阶段 
// 1 - 在目标上 
// 2 - 冒泡阶段 
oEvent.eventPhase = 2; 
//W3C event的isChar属性,表示按下的按键是否有字符与之相关 
oEvent.isChar = (EventUtil.charCode > 0); 
//W3C event的pageX属性,鼠标相对于页面的X坐标 
oEvent.pageX = oEvent.clientX + document.body.scrollLeft; 
//W3C event的pageY属性,鼠标相对于页面的Y坐标 
oEvent.pageY = oEvent.clientY + document.body.scrollTop; 
//W3C event的preventDefault方法,阻止事件的默认行为 
oEvent.preventDefault = function(){ 
this.returnValue = false; 
}; 
//W3C event的relatedTarget属性,事件的第二目标,经常用于鼠标事件 
if(oEvent.type == 'mouseout'){ 
oEvent.relatedTarget = oEvent.toElement; 
}else if(oEvent.type == 'mouseover'){ 
oEvent.relatedTarget = oEvent.fromElement; 
} 
//W3C event的stopPropagation方法,取消冒泡事件 
oEvent.stopPropagation = function(){ 
this.cancelBubble = true; 
}; 
//W3C event的target属性 
oEvent.target = oEvent.srcElement; 
//W3C event的timestamp属性,创建当前时间,并返回毫秒数 
oEvent.time = (new Date()).getTime(); 
} 
return oEvent; 
}; 
EventUtil.getEvent = function(){ 
if(window.event){ 
// IE 下返回event对象 
return this.formatEvent(window.event); 
}else{ 
// W3C 下返回event对象 
return EventUtil.getEvent.caller.arguments[0]; 
} 
}; 
document.getElementById('butt').onclick = function(){ 
var oEvent = EventUtil.getEvent(); 
alert(oEvent); 
}; 
</script> 
</html>
Javascript 相关文章推荐
使用JQUERY Tabs插件宿主IFRAMES
Jan 01 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 Javascript
Node.js获取前端ajax提交的request信息
Feb 20 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
Oct 27 Javascript
npm全局模块卸载及默认安装目录修改方法
May 15 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 Javascript
微信小程序实现转盘抽奖
Sep 21 Javascript
文本框的字数限制功能jquery插件
Nov 24 #Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 #Javascript
jquery ajax提交表单数据的两种方式
Nov 24 #Javascript
js loading加载效果实现代码
Nov 24 #Javascript
jquery.ui.draggable中文文档
Nov 24 #Javascript
JS 实现双色表格实现代码
Nov 24 #Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
Nov 24 #Javascript
You might like
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
更新修改后的Python模块方法
2019/03/03 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
2014学雷锋活动心得体会
2014/03/10 职场文书
元宵节主持词
2014/03/25 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
企业文化标语大全
2014/06/10 职场文书
解放思想演讲稿
2014/09/11 职场文书
学位证书委托书
2014/09/30 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
综合素质评价自我评价
2015/03/06 职场文书
调解协议书范本
2016/03/21 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis