Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • 再谈javascript事件模型

    post by onelong / 2010-7-5 18:07 Monday [javascript]

    在IE中,不能把Event对象作为参数传递给事件处理程序,只能用window.event或者event来引用Event对象。因为在IE中,event是window的一个属性,也就是说event是一个全局变量,这个变量提供了事件的细节。
    Firefox支持几乎所有的W3C DOM二级标准,和部分W3C DOM三级标准。W3C DOM中的Event对象并不是window全局对象下面的属性,换句话说,event不是全局变量。通常在W3C的DOM二级标准中,event作为发生事件的文档对象的属性。在Firefox下JavaScript函数中获取event的方法:

    1、从调用JavaScript函数的HTML页面显式传递参数event(实参的名称一定要用event) 。

    2、若HTML元素的某个事件上直接绑定(在标签里绑定)了一个函数,则在该函数中可以通过
    event = arguments[0];来获取event对象。如<img src="image.jpg" border="0" onclick="click(event)"/>

    3、间接绑定
    obj.onclick = click;
    function click(evt){
    var event = evt||window.event;
    }
    当然你还可以注册事件
    在DOM二级标准中,为某个元素注册事件处理函数用addEventListener(),移除用removeEventListener()
    在IE中则
    obj.attachEvent (on+ "eventName", funHandler);
    obj.detachEvent (on+ "eventName", funHandler);
    上面onclick="click(event)"中的event是一个变量,怎样接收这个参数呢?回调函数应该像如下编写
    function click(evt){
    var event = evt||window.event;
    }
    在IE中evt是undefined的,但可以通过window.event获取,注意这语句的顺序呀,在ff下window.event是undefined!不过我更主张像如下的写法var event = (evt)?evt:window.event;结构明了!

    更多细节请看http://www.ways2u.com/?post=28

     

    引用地址:
     

    评论:

    1. Jrhasan
      That's a clever anewsr to a tricky question

    我要评论