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

 更新时间:2009年11月24日 21:11:11   作者:  
IE浏览器event对象跟W3C实现的不一样.所以自己封装一个EventUtil类来让IE浏览器的event对象与W3C一样.
复制代码 代码如下:

<!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>

相关文章

  • BootStrap tab选项卡使用小结

    BootStrap tab选项卡使用小结

    这篇文章主要为大家详细介绍了BootStrap tab选项卡使用小结,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • js中各种类型的变量在if条件中是true还是false

    js中各种类型的变量在if条件中是true还是false

    变量在if条件中到底是true还是false,还是比较让人迷糊,下面来进行测试,测试常见的变量类型在if条件中的表现
    2014-07-07
  • JS中实现replaceAll的方法(实例代码)

    JS中实现replaceAll的方法(实例代码)

    本文是对JS中实现replaceAll的方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • JS实现黑色大气的二级导航菜单效果

    JS实现黑色大气的二级导航菜单效果

    这篇文章主要介绍了JS实现黑色大气的二级导航菜单效果,具有延迟响应鼠标事件显示切换效果的功能,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • SWFObject基本用法实例分析

    SWFObject基本用法实例分析

    这篇文章主要介绍了SWFObject基本用法,实例分析了SWFObject操作Flash文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 浅析javascript中的Event事件

    浅析javascript中的Event事件

    本文主要对javascript中的(Event)事件进行介绍,文章篇尾举了几个案例:方块随着鼠标移动;输入框文字提示;仿select控件;留言本;自定义右键菜单;键盘控制div运动。需要的朋友可以看下
    2016-12-12
  • 原生JavaScript实现网页版计算器

    原生JavaScript实现网页版计算器

    这篇文章主要为大家详细介绍了原生JavaScript实现网页版计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • js 实现ajax发送步骤过程详解

    js 实现ajax发送步骤过程详解

    这篇文章主要介绍了js 实现ajax发送过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)

    基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)

    最近在开微信的页面,在项目需求中遇到之前没有做过的功能,要求横线提示输入验证码随验证码输入横线消失,基于js怎么实现的呢?下面小编给大家分享基于js实现验证码功能,感兴趣的朋友一起看看吧
    2016-10-10
  • 判断用户是否在线的代码

    判断用户是否在线的代码

    判断用户是否在线的代码,需要的朋友可以参考下。
    2011-03-03

最新评论