js中event,event.srcElement,event.target在IE和firefox下的兼容性

1、window.event对象

 IE:有window.event对象

 firefox:没有window.event对象。可以通过函数的参数传递event对象。例 如:onmousedown=function(event)      解决办法:var e=window.event||event;            

2、event.srcElement和event.target

  IE:有srcElement属性,没有target属性。

  firefox:有target属性,没有srcElement属性。

  event.srcElement和event.target的作用是一样的,获取事件作用的元素。

  IE下的event.srcElement=firefox下的event.target。

  解决办法:用三元运算符:用obj(obj=event.srcElement ? event.srcElement:event.target;) 来代替IE下的event.srcElement和firefox下的event.target。也可以用if条件语句来代替。


例子一:用if语句代替

 

var targ
            if(!e){
                var e=window.event||event;//firefox没有window.event对象
                if(e.target){
                    targ=e.target;
                }else if(e.srcElement){
                    targ=e.srcElement;
                };
            };
            if(targ.nodeType==3){ //nodeType==3代表node.text_node
                targ=targ.parentNode
            };//defeat Safari bug
            var tname;
            tname=targ.tagName;//返回备选元素的标签名
            alert("you clikced on a " + tname + " element");


例子二:用三元运算符代替

            var targ
if(!e){
    var e=window.event||event;//firefox没有window.event对象
    var obj=e.srcElement ? e.srcElement:e.target;
    targ=obj;
};
if(targ.nodeType==3){
    targ=targ.parentNode
};//defeat Safari bug
var tname;
tname=targ.tagName;
alert("you clikced on a " + tname + " element");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章