2010-03-24 91 views
1

我刚刚遇到了clientX和clientY的一个小问题。客户端X和客户端Y在离开浏览器时的区别ie/ff

我放了一个小事件来检测鼠标是否离开窗口并知道它退出的位置。并且出现了麻烦,使用firefox可以正常工作,但是在IE中只发送-1作为答案。有人知道是否有办法轻松解决这个问题,而不使用框架?

的代码一点点重现:

<html> 
    <head> 
    <script type="text/javascript"> 
document.onmouseout=function(e){ 
    if (!e) var e = window.event; 
    var relTarg = e.relatedTarget || e.toElement; 
    if (!relTarg){ 
    document.getElementById('result1').innerHTML="e.clientY:"+e.clientY+" e.clientX:"+e.clientX; 
    } 
}; 
    </script> 

    </head> 
    <body> 
<div id="result1">Not Yet</div> 
    </body> 
</html> 

的结果,如果通过窗口左侧我退出是:

e.clientY:302 e.clientX:-130在Firefox

e.clientY:-1 e.clientX:-1 on ie。

在此先感谢。

回答

0

嗯,无论哪种方式,不e.clientX < 0暗示光标在窗口之外?

+0

好点..... – 2010-03-24 14:09:38

+0

嗡嗡声其实它是真的在IE中,但不是在Firefox中,例如,如果你有一个宽度为1080px的文件,如果你通过右边的退出窗口,e.clientX在1080px时会更胜一筹。所以你可以很容易地知道,如果你通过这种方式退出底部/顶部/左/右。 即ie你不能导致无论你在哪里退出,输出是-1/-1 – 2010-03-24 16:10:31

0
if(e.pageX) 
    { 
     _xmouse = e.pageX; 
     _ymouse = e.pageY; 
    } 
    else 
    { 
     if(typeof(event) == "undefined") return; 
     _xmouse = event.clientX + document.body.scrollLeft; 
     _ymouse = event.clientY + document.body.scrollTop; 
    } 

从我的项目。想想你需要什么

+0

哼哼好像它不是我所需要的,e.page(X | Y)没有为ie定义。在没有滚动条的页面上,它与e.client(X | Y)是一样的, – 2010-03-24 16:15:21

相关问题