event对象在IE和Firefox下的不同用法IE:可以直接用window.event或event获得event对象,同时可直接用event.x或event.y获得当前操作位置的x和y坐标,当然还有其它属性,如:srcElement,keyCode等Firefox: 不能直接使用window.event和event对象,当然也就不能获得该对象的其它属性.Firefox下获得操作位置坐标的属性是:pageX和pageY; 下面提供同时兼容IE和Firefox的获得event对象的方法,在需要用到event对象的地方,调用该方法即可.
 function getEvent() //同时兼容ie和ff的写法
    {  
        if(document.all)   return window.event;    
        func=getEvent.caller;        
        while(func!=null){  
            var arg0=func.arguments[0];
            if(arg0)
            {
              if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
              {  
              return arg0;
              }
            }
            func=func.caller;
        }
        return null;
    }如调用:function test() {
        var event=getEvent();
        if (navigator.appName=='Microsoft Internet Explorer') {
            alert(event.x);
        }else if (navigator.appName=='Netscape') {
            alert(event.pageX);
        }
        
    }

解决方案 »

  1.   

    楼上的正解
    不过测试代码在opera中不能正常显示。改为:
    var __is_ff = (navigator.userAgent.indexOf("Firefox")!=-1);//Firefox
    function getMouseLocation(){
    e = getEvent();
    var mouseX = 0;
    var mouseY = 0;if(__is_ff){
        mouseX = e.layerX + document.body.scrollLeft; 
        mouseY = e.layerY + document.body.scrollLeft; 
    }else{
        mouseX = e.x + document.body.scrollLeft; 
        mouseY = e.y + document.body.scrollTop;  
    }
    return {x:mouseX,y:mouseY};
    }function show(){
    var test = getMouseLocation();
    alert(test.x + ":" + test.y);
    }
      

  2.   

    为什么这样子使用在firefox下报错:$.$getMousePos = function(evt){
    var _x,_y;
    evt = evt || window.event;
    if(evt.pageX || evt.pageY){
    _x = evt.pageX;
    _y = evt.pageY;
    }else if(evt.clientX || evt.clientY){
    _x = evt.clientX + document.body.scrollLeft - document.body.clientLeft;
    _y = evt.clientY + document.body.scrollTop - document.body.clientTop;
    }else{
    return $.$getAbsPos(evt.target);
    }
    return {x:_x,y:_y};
    };