事件在加载之前时的未定义位置

Undefined position when event is beforeunload

本文关键字:未定义 位置 加载 事件      更新时间:2023-09-26

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

每次我运行代码和警报时,都会给我一个未识别的值。

这是我的输出,

<!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"被调用。

提前谢谢。

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

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

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