当前位置: 代码迷 >> JavaScript >> firefox得到event了,但是为何event.clientX还是为undefined?该如何解决
  详细解决方案

firefox得到event了,但是为何event.clientX还是为undefined?该如何解决

热度:106   发布时间:2012-04-23 13:17:38.0
firefox得到event了,但是为何event.clientX还是为undefined?
JScript code

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 这是什么意思?


------解决方案--------------------
只有鼠标事件才能得到clientX
------解决方案--------------------
要看你这个方法的执行环境 了。。。。。。
------解决方案--------------------
JScript code
<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>

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

<!--测试了下木有问题-->
<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>

------解决方案--------------------
ff不支持window.event,只支持event
  相关解决方案