Javascript中的事件对象

浏览器中的事件都是以对象的形式存在的

IE浏览器中事件对象是window对象的一个属性event

 

object.onclick = function()
{
var oEvent = window.event;
}

尽管它是window对象的属性,但event对象还是只能在事件发生时访问,所有的事件处理函数执行之后,该对象就消失了

 

标准DOM中规定event对象必须作为唯一的参数传给事件处理函数:

 

object.onclick = function(oEvent)
{
}

为了兼容浏览器通常采用:

 

object.onclick = function(oEvent){
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对象,而不是发生事件的那个元素。

 

function handle(oEvent){
    
var oDiv = document.getElementById("display");
    
if(window.event) oEvent = window.event;        //处理兼容性,获得事件对象
    if(oEvent.type == "click")                    //检测事件名称
        oDiv.innerHTML += "你点击了我&nbsp&nbsp;";
    
else if( oEvent.type == "mouseover")
        oDiv.innerHTML 
+= "你移动到我上方了&nbsp&nbsp;";
        
}
window.onload 
= function(){
    
var oImg = document.getElementsByTagName("img")[0];
    oImg.onclick 
= handle;
    oImg.onmouseover 
= handle;
}

 

 

事件的目标:知道事件是由哪个对象触发的:

IE:

event.srcElement

标准DOM:

object.onclick = function(oEvent)
{
    
var Target = oEvent.target;
}

兼容的完整代码:

 

 

function handle(oEvent){
    
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;
}

 

posted @ 2009-03-10 11:16  宿远  阅读(299)  评论(0)    收藏  举报