由滚动条触发的Jquery mouseleave文档

时间:2015-04-30 11:22:20

标签: javascript jquery google-chrome

$(document).ready(function(){
    $(document).mouseleave(function(){
        $('#desktop-subscribe-modal').modal('show');
    });
});

我试图在鼠标离开文档窗口时触发一个函数。上面的代码在Firefox中运行良好,但在Chrome中,它会在将鼠标悬停在页面滚动条上时触发。

有没有办法从mouseleave函数中排除滚动条?

2 个答案:

答案 0 :(得分:3)

好的,我通过在触发mouseleave时检查鼠标位置来解决这个问题。当鼠标悬停在视口上方时,我只需要触发它,所以我只检查垂直位置是否为< 0

$(document).ready(function(){
    $(document).mouseleave(function(e){

        //Check mouse is above the viewport
        if(e.clientY < 0){
            $('#desktop-subscribe-modal').modal('show');    
        }

    });
});

答案 1 :(得分:1)

滚动条在技术上位于客户端窗口之外,因此所有浏览器应该执行此操作。有些人没有(所以,FireFox错了,而不是Chrome):)

然而,最好的解决方案是使用替换滚动条(Perfect scrollbar是我最喜欢的)。这些在页面内部使用元素,因此可以在所有浏览器上执行您想要的操作(并且看起来也很酷)。