我在页面之中使用addEventListener和attachEvent为
一个按钮注册了单击事件,然后我又修改文档,
把按钮的注册事件处理语句改为给body注册同一个
事件处理函数,结果就出现了怪异现象:
IE下面:
成功为body添加单击事件,但是按钮的单击事件仍然存在
就是单击按钮仍然执行函数。
火狐下面:
为body添加单击事件失败,但是按钮的单击事件仍然存在
就是单击按钮仍然执行函数。我禁用了火狐 的缓存之后,按钮的单击事件仍然存在。
更怪异的是关闭页面之后,重新使用浏览器打开
在IE和火狐下面按钮的单击事件仍然存在。真不知道该怎么办了。
大家有没有遇到过此类问题呢?

解决方案 »

  1.   

    不太明白你的意思,你这个问题不是dom事件流的问题么.
      

  2.   


    var handler = function(){ alert("click"); };document.getElementById("button").addEventListener("click", handler, false);
    document.body.addEventListener("click", handler, false);
    没明白楼主讲的,并且这些问题和缓存没有关系。
      

  3.   

    addEventListener//好象事件浏览器兼容写法对应removeEventListener
    attachEvent//好象只IE支持对应detachEvent
    执行优先级也不同,addEventListener顺序执行,attachEvent倒序执行.
      

  4.   


    如果真的弹出了两次,那正好说明了你的脚本工作正常。
    你点击按钮,触发了按钮的click事件,弹出一次,
    然后click事件,冒泡到body元素,body元素的click事件处理函数也会执行,又弹出一次,
    一共两次。工作正常。