Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以确定鼠标在IE中的位置_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript 有没有一种方法可以确定鼠标在IE中的位置

Javascript 有没有一种方法可以确定鼠标在IE中的位置,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,当用户试图通过将鼠标移动到窗口顶部离开页面时,我试图为他们显示一条弹出消息 我所面临的问题是,internet explorer似乎无法针对鼠标移动到顶部的情况识别鼠标移动事件。相反,当鼠标在窗口外向上、下、左、右移动时,它会将指针坐标clientX和clientY设置为“-1” 需要指出的是,如果将鼠标移到窗口外的右侧(触发事件浏览器不应在全屏上最大化),它会不时将clientY设置为“-1”。如果将鼠标向左/向右移动20次,将获得30%的clientY='-1',其余的%clientY将包含

当用户试图通过将鼠标移动到窗口顶部离开页面时,我试图为他们显示一条弹出消息

我所面临的问题是,internet explorer似乎无法针对鼠标移动到顶部的情况识别鼠标移动事件。相反,当鼠标在窗口外向上、下、左、右移动时,它会将指针坐标clientX和clientY设置为“-1”

需要指出的是,如果将鼠标移到窗口外的右侧(触发事件浏览器不应在全屏上最大化),它会不时将clientY设置为“-1”。如果将鼠标向左/向右移动20次,将获得30%的clientY='-1',其余的%clientY将包含适当的值

我使用以下代码:

$(document).mouseleave(function(e){console.log("clientX: " + e.clientX + " clientY: " + e.clientY)});

有没有办法确定鼠标在顶部的具体位置?非常感谢您的回答:)

您可以使用此选项,即y值有一些偏差

if(navigator.userAgent.toLowerCase().indexOf("trident")>-1){
          document.captureEvents(Event.MOUSEMOVE)
          document.onmousemove = getMouseXY;
          var tempX = 0;
          var tempY = 0;


          function getMouseXY(e) {
            tempX = event.clientX + document.body.scrollLeft;
            tempY = (event.clientY + document.body.scrollTop);
            if(tempY <= 5)
                {
                   // your code will be here
                }
          }        
}
if(navigator.userAgent.toLowerCase().indexOf(“trident”)>-1){
document.captureEvents(Event.MOUSEMOVE)
document.onmousemove=getMouseXY;
var-tempX=0;
var-tempY=0;
函数getMouseXY(e){
tempX=event.clientX+document.body.scrollLeft;
tempY=(event.clientY+document.body.scrollTop);

如果(tempY)有什么原因你不想为此使用
window.onbeforeunload
?我记得确切的坐标在几年前就被混淆了(从IE9开始?),这是某种安全“改进”。您可以尝试侦听
mousemove
,并存储从该事件中获得的坐标,可能会有一点延迟(当鼠标离开页面时,mousemove坐标也会模糊).@PaulAbbott可能是因为当你简单地将鼠标从浏览器窗口移开时,
onbeforeunload
不会启动。谢谢你的回复。
mousemove
的问题是IE也没有正确地计算客户端位置。有时它显示0,但有时值大于0(例如7、27甚至100。这取决于移动鼠标的速度。速度越快,得到的值越大)。因此,很难根据此事件判断客户是将鼠标移到了窗口的顶部,还是只是将鼠标移到了页面的顶部(例如,将鼠标移到页眉或页面的菜单)