function(e){
     if(!e) e = window.event;
     alert(e);
     alert(e.clientX + " " + e.clientY);
     ...
}
我使用如上的传参数形式,在firebug下看到e是unload,这说明已经得到了event ,但是为何调用e.clientX 却得到undefined 还有 e.clientX<0&&e.clientY<0 这是什么意思?

解决方案 »

  1.   

    <div id="handler" style="position:absolute;width:100px;height:100px;background:#efefef;border:1px solid #ccc;"></div>
    <script type="text/javascript">
    var handler = document.getElementById('handler');
    document.onmousemove = function(event){
    var e = event ? event : window.event;
    handler.style.top = e.clientY + 20 + 'px';
    handler.style.left = e.clientX + 20 + 'px';
    }</script>
      

  2.   

    你在搞关闭浏览器的提示(剔除刷新影响)吧?
    1、别用onunload(), 用onbeforeunload();
    2、FF下就是有这个问题,它抓的事件不是MOUSE的事件,而是onbeforeunload,或onunload,所以判断鼠标位置剔除刷新就没可能了
      

  3.   


    <!--测试了下木有问题-->
    <span id="show"></span>
    <script type="text/javascript">
    window.document.onmousemove=function(e){
           e=e||window.event;
           document.getElementById("show").innerHTML="X:"+e.clientX+"Y:"+e.clientY;
       }
    </script>
      

  4.   

     ff不支持window.event,只支持event
      

  5.   


    firefox 判断鼠标位置剔除刷新就没可能了 ?  不会吧? 你不是悲剧了? 那腾讯或是那些大网站是靠session过期来判断在线人数的?
      

  6.   


    我用onbeforeunload了,也进入了remove方法,我的remove方法是这样写的:
    function removeline(e){
    if(!e) {
    e = window.event;
    }
    if(e.clientX<0&&e.clientY<0) {
    alert("remove 3");
    document.write('<iframe width="100" height="100" src="remove.jsp"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0  id=WebBrowser width=0></OBJECT>');
    alert("remove 4");
    document.all.WebBrowser.ExecWB(45,1);
    alert("remove 5");
    }
    }我在360浏览器下(或者IE6下)关闭浏览器,alert语句根本不执行,这是怎么回事?
      

  7.   


    <script language="javascript">
    window.onbeforeunload=function() {
    alert("1");
    alert("2");
    alert(event.clientX);
    alert("3");
    alert("4");
    }
    </script><html>
    <body>
    fuck
    </body>
    </html>自己在360浏览器下做了测试,如果是刷新5个alert都执行,但是关闭浏览器的话就好像都不执行了 ,只听到一声alert的声音 然后没了  不知道这个该怎么解释
      

  8.   

    年轻就是气盛,赞一个。不过太过气盛难免偏颇,呵呵。顺便说下,“靠session过期来判断在线人数”和我说的根本无关。我说的是:firefox 判断鼠标位置剔除刷新就没可能了
      

  9.   

    9楼才进入问题的核心。google或本站查询吧。这个问题我以前没少回帖
      

  10.   


    window.onbeforeunload = function(){      
        var n = window.event.screenX - window.screenLeft;      
        var b = n > document.documentElement.scrollWidth-20;      
        if(b && window.event.clientY < 0 || window.event.altKey){    
            alert("是关闭而非刷新");
            window.event.returnValue = "是否关闭?";   
        }else{
            alert("是刷新而非关闭");
        }      
    }
    这个能区分刷新和关闭了,但是它只对IE6有用,对360浏览器无效,不知道为什么
      

  11.   


    你这个区分刷新和关闭的问题,我们以前没少回帖。。不行就是不行区分用的是ie上的 特性,也可以说是bug。就算是360上有用了。还有chrome ff opera等。
      

  12.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head> </head> <body>
      <button onclick="test()">test</button>
     </body>
    </html>
    <script type="text/javascript">
    <!--function getEvent()

        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()
    {
    e=getEvent(); alert(e.clientX);
    }
    //-->
    </script>
      

  13.   

    如果firefox在不支持event的话,最好的解决办法就是在事件参数里面加上event的参数即可
    ,还有IE不支持eventX,IE,fireFox两者都支持clientX
      

  14.   

    function showcontent()
    {
               var evt=SearchEvent();  
               alert(evt);
    }
    function SearchEvent()
    {
               func=SearchEvent.caller; //回调函数:回去调用showcontent()方法
               while(func!=null)
               {
                   var arg0=func.arguments[0];
                   if(arg0)
                   {
                       if(arg0.constructor==Event) // 如果就是event 对象
                       
                           return arg0;
                   }
                   func=func.caller;
               }
               return null;
    }
      

  15.   

    FF需要另行判断,你用这个方法就完美解决了。document.onmousemove = function(evt) {
    if (typeof evt == 'undefined') {
    myEvent = window.event;
    } else {
    myEvent = evt;
    }
    if(myEvent.clientX){
    posX = myEvent.clientX+document.body.scrollLeft;
    posY = myEvent.clientY+document.body.scrollTop;
    }
    else if(myEvent.pageX){
    posX = myEvent.pageX+window.pageXOffset;
    posY = myEvent.pageY+window.pageYOffset;
    }
    }