事件在beforeunload之前的未定义位置

时间:2015-03-30 20:05:47

标签: javascript

嗨我有这个代码,当我尝试卸载页面时,我试图获得鼠标位置。

每次我运行代码和警报都会给我带来不明的价值。

这是我的输出,

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script>

var mouse = {x: 0, y: 0};
 
document.addEventListener('mousemove', function(e){ 
    mouse.x = e.clientX || e.pageX; 
    mouse.y = e.clientY || e.pageY 
}, false);

if (window.addEventListener) {  // all browsers except IE before version 9
	window.addEventListener("beforeunload", function (e) {
		  var confirmationMessage = "Hi";
		  alert(mouse.x + ' : ' + mouse.y);  	  
		  	return confirmationMessage;                            
		});
}
else {
    if (window.attachEvent) {   // IE before version 9
    	window.attachEvent("beforeunload", function (e) {
	          var confirmationMessage = "Hi";
		  alert(mouse.x + ' : ' + mouse.y);
			  return confirmationMessage;                            
		});

    }
}
</script>
</head>

<body>
  <h1>This is a Heading</h1>
  <p id = "myAns">This is a paragraph.</p>
</body>

</html>


我修改了你们建议的代码。 那么我的问题是如何找出用户点击浏览器关闭按钮或关闭标签按钮的时间?

因为我认为当用户点击文档时,鼠标位置为0,我们可以告诉用户点击关闭按钮“beforeUnload”。

提前致谢。

1 个答案:

答案 0 :(得分:1)

关闭选项卡时,浏览器不会抛出鼠标事件。我知道有些浏览器有特定的标签事件,但仅供浏览器扩展使用。

在JS中检测用户关闭页面是不可能的 - 您可以检测到的是他们离开页面,这可能意味着很多事情(点击链接,关闭浏览器,输入一个地址,打开书签,按Alt + F4 ...)。鼠标位置不能用于确定用户离开页面的行为,因为他可能正在使用另一种形式的浏览器(触摸屏,游戏机,命令行浏览器,任何没有鼠标的浏览器......)和按钮可以位于完全不同的位置。

您不应该完全依赖JS来断开用户连接。如果要强制用户退出,请使用一些跟踪会话ID的服务器代码,并在服务器上放置一个不活动计时器。