Javascript中的事件对象
浏览器中的事件都是以对象的形式存在的
IE浏览器中事件对象是window对象的一个属性event
{
var oEvent = window.event;
}
尽管它是window对象的属性,但event对象还是只能在事件发生时访问,所有的事件处理函数执行之后,该对象就消失了
标准DOM中规定event对象必须作为唯一的参数传给事件处理函数:
{
}
为了兼容浏览器通常采用:
if(window.event) oEvent = window.event;
}
Event对象的主要属性和方法
1.type:事件的类型,就是HTML标签属性中,没有“on”前缀之后的字符串,例如“Click”就代表单击事件。
2.srcElement:事件源,就是发生事件的元素。比如<a ></a> a这个链接是事件发生的源头,也就是该事件的srcElement。(非IE中用target)
3.button:声明了被按下的鼠标键,是一个整数。0代表没有按键,1代表鼠标左键,2代表鼠标右键,4代表鼠标的中间键,如果按下了多个鼠标键,就把这些值加在一起,所以3就代表左右键同时按下。
4.clientX/clientY:是指事件发生的时候,鼠标的横、纵坐标,返回的是整数,它们的值是相对于包容窗口的左上角生成的。
5.offsetX/offsetY:鼠标指针相对于源元素的位置,可以确定单击Image对象的哪个象素。
6.altKey,ctrlKey,shiftKey:顾名思义,这些属性是指鼠标事件发生的时候,是否同时按住了Alt、Ctrl或者Shift键,返回的是一个布尔值。
7.keyCode:返回keydown和keyup事件发生的时候,按键的代码以及keypress事件的Unicode字符。比如event.keyCode=13代表按下了回车键;
8.fromElement、toElement前者是指代mouseover事件移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素。
9.cancelBubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素,它用于检测是否接受上层元素的事件的控制。true代表不被上层元素的事件控制,false代表允许被上层元素的事件控制。
10.returnValue:一个布尔值属性,设置为false的时候可以阻止浏览器执行默认的事件动作,相当于<a href=”#” onclick=”ProcessMethod();return false;” />。
11.attachEvent()和detachEvent()方法:为制定DOM对象事件类型注册多个事件处理函数的方法,它们有两个参数,第一个是
事件类型,第二个是事件处理函数。在attachEvent()事件执行的时候,this关键字指向的是window对象,而不是发生事件的那个元素。
var oDiv = document.getElementById("display");
if(window.event) oEvent = window.event; //处理兼容性,获得事件对象
if(oEvent.type == "click") //检测事件名称
oDiv.innerHTML += "你点击了我  ";
else if( oEvent.type == "mouseover")
oDiv.innerHTML += "你移动到我上方了  ";
}
window.onload = function(){
var oImg = document.getElementsByTagName("img")[0];
oImg.onclick = handle;
oImg.onmouseover = handle;
}
事件的目标:知道事件是由哪个对象触发的:
IE:
标准DOM:
{
var Target = oEvent.target;
}
兼容的完整代码:
if(window.event) oEvent = window.event; //处理兼容性,获得事件对象
var oTarget;
if(oEvent.srcElement) //处理兼容性,获取事件目标
oTarget = oEvent.srcElement;
else
oTarget = oEvent.target;
alert(oTarget.tagName); //弹出目标的标记名称
}
window.onload = function(){
var oImg = document.getElementsByTagName("img")[0];
oImg.onclick = handle;
}

浙公网安备 33010602011771号