event是ie自带的一个对象,而ff中不存在该对象,只能通过传递参数的方式来模拟event,:(

关于event的详细区别请查看这篇文章 window.event对像在IE与FF中的区别

另外ie中使用srcElement去获得事件触发源,ff下使用target。因此使用这两个对象时需要做相关的浏览器兼容。

<script type="text/javascript">
<!–
function Click(event){
    event = event? event: window.event
    var obj = event.srcElement ? event.srcElement:event.target;
    alert(obj.tagName);
}
//–>
</script>
</head>

<body>
<button id="btn" onclick="Click(event)">点击</button>
</body>
 

查看运行结果

综合上节attachEvent与addEventListener。

<script type="text/javascript">
<!–
function Click(event){
    event = event? event: window.event;
    var obj = event.srcElement ? event.srcElement:event.target;
    alert("eventObj.tabName:" + obj.tagName);
}
var oBtnNew;
window.onload=function(){
    oBtnNew=document.getElementById("btnNew");
    if(window.attachEvent){
        oBtnNew.attachEvent("onclick",hanlder);
        oBtnNew.attachEvent("onmouseover",hanlder);
    }else{
        oBtnNew.addEventListener("click",hanlder,false);
        oBtnNew.addEventListener("mouseover",hanlder,false);
    }
/*或者采用下面试
    oBtnNew.onclick=hanlder;
    oBtnNew.onmouseover=hanlder;*/
}
function hanlder(event){
    event=event?event:window.event;
    if(event.type=="click")
        oBtnNew.innerHTML="发生了onclick事件";
    else if(event.type=="mouseover")
        oBtnNew.innerHTML="发生了onmouseover事件";
}
//–>
</script>
</head>

<body>
<button id="btn" onclick="Click(event)">点击</button>
<button id="btnNew">添加事件点击</button>
 

查看运行效果

(以下内容为12月12月加)

在VS2005 MSDN的 HTML源码JS库中发现了一段很不错的JS,扩展了JS的事件监听

 // attach a handler to a particular event on an element
 // in a browser-independent way
 function registerEventHandler (element, event, handler) {
  if (element.attachEvent) {
  // MS registration model
  element.attachEvent('on' + event, handler);
  } else if (element.addEventListener) {
  // NN (W4C) regisration model
  element.addEventListener(event, handler, false);
  } else {
  // old regisration model as fall-back
  element[event] = handler;
  }
 }
 

Related posts:

  1. js中的冒泡事件与事件监听 js中“冒泡事件”并不是能实际使用的花哨技巧,它是一种对js事件执行顺序的机制,“冒泡算法”在编程里是一个经典问题,冒泡算法里面的冒泡应该说是交换更加准确;js里面的“冒泡事件”才是真正意义上的“冒泡”,它从DOM最低层逐层遍历树,然后附加相应事件。...

以上关联文章由 Yet Another Related Posts Plugin 提供支持。