相关疑难解决方法(0)

如何检测鼠标何时离开窗口?

我希望能够检测到鼠标何时离开窗口,以便在用户的鼠标位于其他位置时可以阻止事件触发.

有关如何做到这一点的任何想法?

javascript browser mouse

88
推荐指数
10
解决办法
9万
查看次数

为什么我不能可靠地捕获mouseout事件?

我需要知道鼠标光标何时离开div.所以我联系了这个mouseout活动.但是,如果我将鼠标快速移出div,则mouseout事件不会触发.这是正确的:鼠标光标坐以待毙里面div,它现在是外面div,然而在mouseout回调没有被调用.(如果我不快速移动鼠标,它可以正常工作.)

最新的谷歌浏览器中也是如此- 所以不仅仅是"旧浏览器"问题.

解决方法:

之前提出过关于这个问题的问题.显然这只是生活中的事实,我发现的唯一解决方法是手动监控mousemove事件,每次检查光标的x/y坐标并查看它们是否属于div边界框,这样你就有更多的机会如果光标不在其中,则"注意".

与让浏览器本地完成所有这些操作相比,对每个像素移动执行计算有点受到性能影响.编码也很繁琐.

关于我的问题......

为什么浏览器无法可靠地捕获mouseout事件?如果我可以可靠地判断鼠标何时离开div使用上述解决方法,为什么浏览器不能这样做呢?

我理解(从上面链接的答案)JavaScript不会尝试插入"框架".假如你在mousemove处理器上放置一个处理程序document,并在完美的水平线上快速将鼠标向右移动200个像素,则可能无法获得200个mousemove事件.一些将被遗漏.我没有问题.

但是如果在鼠标越过边界时错过了一些像素移动div,为什么mouseout还要跳过该事件呢?当浏览器最终再次开始注册鼠标的位置时(在突然快速移动之后),即使鼠标现在在盒子外面数英里,关键是它曾经在盒子中而不再是.那么为什么它不会发射mouseout事件呢?

我只是不明白为什么这对浏览器供应商来说是个难题.(但我相信可能有一个很好的理由,我觉得这太愚蠢了.)

我发布这个问题主要是出于好奇,但我希望答案可以提供一些有助于我更有效地解决问题的见解.此外,任何替代解决方案(比上面提到的更快)都是受欢迎的.

javascript javascript-events

44
推荐指数
2
解决办法
1万
查看次数

为什么$(document).blur()和$(document).focus()不能与Safari或Chrome一起使用?

我正在制作一个计数器,当文档处于焦点时会倒计时.它在模糊时停止倒计时.

它在FF中工作,但使用Safari和Chrome,计数器根本不起作用.

Safari/Chrome是否存在兼容性问题?

我正在使用的是$(document).blur()$(document).focus(),并且在一个$(document).ready()区块内都有.

var tm;
$(document).ready(function(){   

        var seconds = 50;
        $('#timer').html(seconds);
        countdown();

    $(window).focus(function(){
         function countdown(){ 
         if (seconds > 0) {
            seconds--; 
            $('#timer').text(seconds);
            tm = setTimeout(countdown,1000);
            }
        if (seconds<=0){ 
            $('#timer').text('Go');
            }   
        }); 



    $(window).blur(function(){
        clearTimeout(tm);
        seconds++;
        $('#timer').text(seconds);

    });
});
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×3

browser ×1

html ×1

javascript-events ×1

jquery ×1

mouse ×1