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 相关文章推荐
js弹窗代码 可以指定弹出间隔
Jul 03 Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
JavaScript实现的一个倒计时的类
Mar 12 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
Aug 11 Javascript
基于vue如何发布一个npm包的方法步骤
May 15 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
JavaScript函数柯里化实现原理及过程
Dec 02 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 Javascript
JavaScript实现栈结构详细过程
Dec 06 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实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
Python3之手动创建迭代器的实例代码
2019/05/22 Python
python 内置函数汇总详解
2019/09/16 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
python带参数打包exe及调用方式
2019/12/21 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
大学生优秀的自我评价分享
2013/10/22 职场文书
实习生自荐信范文
2013/11/13 职场文书
个性婚礼策划方案
2014/05/17 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
教师工作总结范文2014
2014/11/10 职场文书
介绍信格式
2015/01/30 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
二审答辩状范文
2015/05/22 职场文书
消费者投诉书范文
2015/07/02 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA