Javascript DOM Event对象方法详解

      Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!

事件分为三个阶段:   事件捕获 -->  事件目标 -->  事件冒泡 
事件捕获:事件发生时(onclick,onmouseover……)首先发生在document上,然后依次传递给body......最后到达目的节点(即事件目标)。
事件冒泡:事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,跟事件捕获相反



1、事件句柄 (Event Handlers)
      HTML4.0的新特性之一是能够使HTML事件触发浏览器中的行为,比如当用户点击某个HTML元素时启动一段JavaScript。下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为。

事件浏览器支持解说
一般事件
onclickIE3、N2鼠标点击时触发此事件
ondblclickIE4、N4鼠标双击时触发此事件
onmousedownIE4、N4按下鼠标时触发此事件
onmouseupIE4、N4鼠标按下后松开鼠标时触发此事件
onmouseoverIE3、N2当鼠标移动到某对象范围的上方时触发此事件
onmousemoveIE4、N4鼠标移动时触发此事件
onmouseoutIE4、N3当鼠标离开某对象范围时触发此事件
onkeypressIE4、N4当键盘上的某个键被按下并且释放时触发此事件.
onkeydownIE4、N4当键盘上某个按键被按下时触发此事件
onkeyupIE4、N4当键盘上某个按键被按放开时触发此事件
页面相关事件
onabortIE4、N3图片在下载时被用户中断
onbeforeunloadIE4、N当前页面的内容将要被改变时触发此事件
onerrorIE4、N3出现错误时触发此事件
onloadIE3、N2页面内容完成时触发此事件
onmoveIE、N4浏览器的窗口被移动时触发此事件
onresizeIE4、N4当浏览器的窗口大小被改变时触发此事件
onscrollIE4、N浏览器的滚动条位置发生变化时触发此事件
onstopIE5、N浏览器的停止按钮被按下时触发此事件或者正在下载的文件被中断
onunloadIE3、N2当前页面将被改变时触发此事件
表单相关事件
onblurIE3、N2当前元素失去焦点时触发此事件
onchangeIE3、N2当前元素失去焦点并且元素的内容发生改变而触发此事件
onfocusIE3 、N2当某个元素获得焦点时触发此事件
onresetIE4 、N3当表单中RESET的属性被激发时触发此事件(函数名前加return)
onsubmitIE3 、N2一个表单被递交时触发此事件 (函数名前加return)
滚动字幕事件
onbounceIE4、N在Marquee内的内容移动至Marquee显示范围之外时触发此事件(behavior标记为aloernate时才有效
onfinishIE4、N当Marquee元素完成需要显示的内容后触发此事件
onstartIE4、 N当Marquee元素开始显示内容时触发此事件
编辑事件
onbeforecopyIE5、N当页面当前的被选择内容将要复制到浏览者系统的剪贴板前触发此事件(函数名前加return)
onbeforecutIE5、 N当页面中的一部分或者全部的内容将被移离当前页面[剪贴]并移动到浏览者的系统剪贴板时触发此事件(函数名前加return)
onbeforeeditfocusIE5、N当前元素将要进入编辑状态
onbeforepasteIE5、 N内容将要从浏览者的系统剪贴板传送[粘贴]到页面中时触发此事件(返回true或false是无效的 使用clipboardData等)
onbeforeupdateIE5、 N当浏览者粘贴系统剪贴板中的内容时通知目标对象
oncontextmenuIE5、N当浏览者按下鼠标右键出现菜单时或者通过键盘的按键触发页面菜单时触发的事件(函数名前加return)
oncopyIE5、N当页面当前的被选择内容被复制后触发此事件(函数名前加return)
oncutIE5、N当页面当前的被选择内容被剪切时触发此事件(函数名前加return)
ondragIE5、N当某个对象被拖动时触发此事件 [活动事件]
ondragdropIE、N4一个外部对象被鼠标拖进当前窗口或者帧
ondragendIE5、N当鼠标拖动结束时触发此事件,即鼠标的按钮被释放了
ondragenterIE5、N当对象被鼠标拖动的对象进入其容器范围内时触发此事件
ondragleaveIE5、N当对象被鼠标拖动的对象离开其容器范围内时触发此事件
ondragoverIE5、N当某被拖动的对象在另一对象容器范围内拖动时触发此事件
ondragstartIE4、N当某对象将被拖动时触发此事件
ondropIE5、N在一个拖动过程中,释放鼠标键时触发此事件
onlosecaptureIE5、N当元素失去鼠标移动所形成的选择焦点时触发此事件
onpasteIE5、N当内容被粘贴时触发此事件(函数名前加return)
onselectIE4、N当文本内容被选择时的事件(函数名前加return)
onselectstartIE4、N当文本内容选择将开始发生时触发的事件(函数名前加return)
数据绑定
onafterupdateIE4、N当数据完成由数据源到对象的传送时触发此事件
oncellchangeIE5、N当数据来源发生变化时
ondataavailableIE4、N当数据接收完成时触发事件
ondatasetchangedIE4、N数据在数据源发生变化时触发的事件
ondatasetcompleteIE4、N当来子数据源的全部有效数据读取完毕时触发此事件
onerrorupdateIE4、N当使用onBeforeUpdate事件触发取消了数据传送时,代替onAfterUpdate事件
onrowenterIE5、N当前数据源的数据发生变化并且有新的有效数据时触发的事件
onrowexitIE5、N当前数据源的数据将要发生变化时触发的事件
onrowsdeleteIE5、N当前数据记录将被删除时触发此事件
onrowsinsertedIE5、N当前数据源将要插入新数据记录时触发此事件
外部事件
onafterprintIE5、N当文档被打印后触发此事件
onbeforeprintIE5、N当文档即将打印时触发此事件
onfilterchangeIE4、N当某个对象的滤镜效果发生变化时触发的事件
onhelpIE4、N当浏览者按下F1或者浏览器的帮助选择时触发此事件
onpropertychangeIE5、N当对象的属性之一发生变化时触发此事件
onreadystatechangeIE4、N当对象的初始化属性值发生变化时触发此事件


2、鼠标 / 键盘属性

属性 描述
altKey 返回当事件被触发时,"ALT" 是否被按下。
button 返回当事件被触发时,哪个鼠标按钮被点击。
clientX 返回当事件被触发时,鼠标指针的水平坐标。
clientY 返回当事件被触发时,鼠标指针的垂直坐标。
ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。
metaKey 返回当事件被触发时,"meta" 键是否被按下。
relatedTarget 返回与事件的目标节点相关的节点。
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。
shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。


button值
参数 描述
0 规定鼠标左键。
1 规定鼠标中键。
2 规定鼠标右键。


IE浏览器拥有不同的参数:

参数 描述
1 规定鼠标左键。
4 规定鼠标中键。
2 规定鼠标右键。


3、IE 属性
除了上面的鼠标/事件属性,IE 浏览器还支持下面的属性:

属性 描述
cancelBubble 如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true。
fromElement 对于 mouseover 和 mouseout 事件,fromElement 引用移出鼠标的元素。
keyCode 对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup 事件,它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关。
offsetX,offsetY 发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。
returnValue 如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。
srcElement 对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。
toElement 对于 mouseover 和 mouseout 事件,该属性引用移入鼠标的元素。
x,y 事件发生的位置的 x 坐标和 y 坐标,它们相对于用CSS动态定位的最内层包容元素。


4、标准 Event 属性
下面列出了 2 级 DOM 事件标准定义的属性:

属性 描述
bubbles 返回布尔值,指示事件是否是起泡事件类型。
cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。
currentTarget 返回其事件监听器触发该事件的元素。
eventPhase 返回事件传播的当前阶段。
target 返回触发此事件的元素(事件的目标节点)。
timeStamp 返回事件生成的日期和时间。
type 返回当前 Event 对象表示的事件的名称。

5、标准 Event 方法
下面列出了 2 级 DOM 事件标准定义的方法。IE 的事件模型不支持这些方法:

方法 描述
initEvent() 初始化新创建的 Event 对象的属性。
preventDefault() 通知浏览器不要执行与事件关联的默认动作。
stopPropagation() 不再派发事件。








6、IE兼容相关

6.1 注册与移除事件监听器

1)addEventListener(event.type, handle, boolean);IE8及以下不支持,属于DOM2级的方法,可添加多个方法不被覆盖

//事件类型没有on,false 表示在事件第三阶段(冒泡)触发,true表示在事件第一阶段(捕获)触发。 如果handle是同一个方法,只执行一次。
ele.addEventListener('click', function(){ }, false);  
//解绑事件,参数和绑定一样
ele.removeEventListener(event.type, handle, boolean);

2)attachEvent(event.type, handle ); IE特有,兼容IE8及以下,可添加多个事件处理程序,只支持冒泡阶段

//如果handle是同一个方法,绑定几次执行几次,这点和addEventListener不同,事件类型要加on,例如onclick而不是click
ele.attachEvent('onclick', function(){ }); 
//解绑事件,参数和绑定一样
ele.detachEvent("onclick", function(){ });

3)接下来我们把事件绑定以及事件解绑封装成为一个函数,兼容浏览器,包括IE6及以上

复制代码
// 事件绑定
function addEvent(element, eType, handle, bol) {
    if(element.addEventListener){           //如果支持addEventListener
        element.addEventListener(eType, handle, bol);
    }else if(element.attachEvent){          //如果支持attachEvent
        element.attachEvent("on"+eType, handle);
    }else{                                  //否则使用兼容的onclick绑定
        element["on"+eType] = handle;
    }
}
复制代码
复制代码
// 事件解绑
function removeEvent(element, eType, handle, bol) {
    if(element.addEventListener){
        element.removeEventListener(eType, handle, bol);
    }else if(element.attachEvent){
        element.detachEvent("on"+eType, handle);
    }else{
        element["on"+eType] = null;
    }
}
复制代码

6.2 阻止事件传递后的默认处理

1)event.preventDefault( ); 阻止通过 addEventListener( ) 添加的事件的默认事件DOM标准

element.addEventListener("click", function(e){
    var event = e || window.event;
    ……
    event.preventDefault( );      //阻止默认事件
},false);

2)event.returnValue = false; 阻止通过 attachEvent( ) 添加的事件的默认事件IE

element.attachEvent("onclick", function(e){
    var event = e || window.event;
    ……
    event.returnValue = false;       //阻止默认事件
},false);

6.3 取消浏览器的事件传递

event.stopPropagation( );              // 阻止事件的进一步传播,包括(冒泡,捕获),无参数DOM标准
event.cancelBubble = true;             // true 为阻止冒泡IE





  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郎涯技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值