脚本中的事件有2种模型
1、 冒泡型事件:事件是按照从最特定的目标到最不特定的事件目标(document)的顺序依次触发。这是针对不同元素的同一事件类型
如:
<html οnclick=”handleClick()”>
<head></head>
<body οnclick=”handleClick()”>
<div οnclick=”handleClick()”>
</body>
</html>
click事件的触发顺序为div——>body——>document
微软的IE就采用的是冒泡事件模型
2、 捕获型事件:和冒泡事件相反,事件是按照从最不特定的目标(document)到最特定的目标的顺序依次触发。这是针对不同元素的同一事件类型
如上面的示例,handleClick事件的触发顺序为document——>body——>div
标准的DOM采用两种事件模型,既有捕获型事件,又有冒泡型事件,用户可以根据需求选择相应的事件模型
事件处理函数的绑定/卸载:
1、 针对IE
[object].attachEvent(“name_of_event_handler”,fnhandler);
[object].detachEvent(“name_of_event_handler”,fnhandler);
如:
var dom=document.getElementById(“div1”);
dom.attachEvent(“onclick”,handlerClick)
注意:一定要在事件类型前加on
2、 针对兼容DOM的浏览器
[object].addEventListener(“name_of_event”,fnhandler,bCapture);
[object].removeEventListener(“name_of_event”,fnhandler,bCapture);
注意,第三个参数bCapture标示选择的事件模型,为true,选择捕获型事件模型,为false,选择冒泡型事件模型
如:
var dom =document.getElementById(“div1”);
dom.addEventListener(“click”,handleClick);
阻止事件的传递:
1、 阻止事件的默认行为
事件的默认行为是指一些元素自身绑定的事件处理函数,像鼠标右键事件,文本框的输入事件等。
如果要阻止鼠标的右键事件,可以采用
l IE
window.event.returnValue=false;
l DOM兼容的浏览器
oEvent.preventDefault(); //oEvent在DOM中就是事件对象
两者兼容的方法
document.body.οncοntextmenu=function(oEvent)
{
If(isIE)
{
oEvent=window.event; //IE中获取事件对象的方法
oEvent.returnValue=false;
}
Else
oEvent.preventDefault();
}
2、 阻止事件的冒泡
阻止特定事件的冒泡,就可以阻止本事件的处理函数的执行
l IE
必须将本事件的cancleBubble属性设置为true
oEvent.cancleBubble=true;
l DOM兼容的浏览器
oEvent.stopPropagation();
事件对象的获取方式
1、 IE中,事件是window对象的一个属性,且事件只能在事件发生时才能进行访问,所以,事件的访问位置也就限制在了事件处理函数之中。
oDiv.οnclick=function()
{
var oEvent=window.event;
}
2、 DOM标准中,事件对象独立任何其他对象,并且事件对象可以作为唯一的一个参数放在事件处理函数中。
如:
oDiv.οnclick=function(event)
{
}
或者:
oDiv.οnclick=function()
{
var oEvent=arguments[0];
}
总之:要访问事件对象的属性,就必须获取该事件,以上就是获取事件对象的方法。