一个有关事件对象兼容的代码。
      var fa=e.target||window.event.srcElement这句在FF下没问题,但ie下会提示target为空或者不是对象,我这里用“||”就希望为空或者不存在的时候fa被赋值window.event.srcElement,为何没附上呢?
   而如果将var fa的值改为  var fa=window.event.src||Elemente.target这个时候在ie没问题,但火狐下又没反应。。
   于是陷入两难,是不是写法上存在问题,请高手出招。 
         <p id="f">我们都是好孩子</p>
<script type="text/javascript">
document.getElementById("f").onclick=dian;
function dian(e){
var evt=e||window.event;
var fa=e.target||window.event.srcElement;  
alert(fa.nodeName);
}
</script>

解决方案 »

  1.   

    <script type="text/javascript">
    document.getElementById("f").onclick=dian;
    function dian(e){
    var evt=e||window.event;
    var fa=evt.target||evt.srcElement;  
    alert(fa.nodeName); 
    }
    </script>
      

  2.   

    你上边evt=e||window.event这句话不都对IE和火狐兼容了么 var fa=e.target||window.event.srcElement;   还用e 在IE下当然不认了 呵呵
      

  3.   

    保持兼容: var evt=e||window.event;
    var fa=evt.target||evt.srcElement;
    不能写成:var evt=e||window.event;
    var fa=e.target||window.event.srcElement;
      因为如果在ie下,e是没有的,所以e.target会变成一个没有的对象去引用了一个属性,这样会报错。而第一种写法的话,如果e没有则evt就会等于window.event,这样window.event.target是不行的,因为window.event没有这个属性,于是会选择window.srcElement。所以如果是一项没有,则通过“||”可以选择到另一项,但是如果一项没有,又用该项去引用属性,则会报错,有这项而没有正确的属性是没有关系的。