Ron*_*bet 4 javascript jquery jquery-events
我创建了一个jQuery事件,当访问者离开页面时会弹出一个对话框.我正在使用e.pageY来检测鼠标位置.当鼠标位于Y:小于2时,弹出对话框.问题是,当我向下滚动页面并决定离开页面时,弹出窗口没有显示,因为鼠标不在Y:小于2.我该如何解决这个问题.即当我离开页面并将鼠标悬停在地址栏上时,尽管向下滚动,仍会出现弹出窗口.
这里是我的代码和底部的工作示例.
var mouseLastYPos = null;
$(document).mousemove(function(e){
if(mouseLastYPos){
if (e.pageY < mouseLastYPos && e.pageY <= 2){
$('#mystuff').show();
}
}
mouseLastYPos = e.pageY;
});?
Run Code Online (Sandbox Code Playgroud)
工作实例:http://jsfiddle.net/bmHbt/
非常感谢你.
旧问题,但我想我也应该分享我的代码,也许有人觉得它很有用.
$(function(){
var mouseY = 0;
var topValue = 0;
window.addEventListener("mouseout",function(e){
mouseY = e.clientY;
if(mouseY<topValue) {
alert("Do something here!!!");
}
},
false);
});
Run Code Online (Sandbox Code Playgroud)
这是我的实现: http: //jsfiddle.net/fq8HT/
它还尝试通过包含上次触发 mousemove 之间的差异来考虑快速移动鼠标的用户。
(function() {
var current_scroll = 0;
var last_mouse_y = null;
$(document)
.scroll(function() {
current_scroll = $(this).scrollTop();
})
.mousemove(function(e) {
var speed = last_mouse_y - e.pageY;
var success_val = e.pageY - speed;
if (success_val < last_mouse_y && success_val <= current_scroll) {
$('#stop-leaving').show();
} else {
$('#stop-leaving').hide();
}
last_mouse_y = e.pageY;
});
})();
Run Code Online (Sandbox Code Playgroud)