2015-03-30 43 views
2

嗨我有这段代码,当我尝试卸载页面时试图获取鼠标位置。未定义事件发生前的位置

每次我运行代码和警报给我身份不明的价值。

这里是我的输出,

<!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 
 
\t window.addEventListener("beforeunload", function (e) { 
 
\t \t var confirmationMessage = "Hi"; 
 
\t \t alert(mouse.x + ' : ' + mouse.y); \t 
 
\t \t \t return confirmationMessage;        
 
\t \t }); 
 
} 
 
else { 
 
    if (window.attachEvent) { // IE before version 9 
 
    \t window.attachEvent("beforeunload", function (e) { 
 
\t   var confirmationMessage = "Hi"; 
 
\t \t alert(mouse.x + ' : ' + mouse.y); 
 
\t \t \t return confirmationMessage;        
 
\t \t }); 
 

 
    } 
 
} 
 
</script> 
 
</head> 
 

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

 
</html>


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

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

在此先感谢。

+4

因为卸载事件不是鼠标事件,例如点击。鼠标位置与卸载无关。 – 2015-03-30 20:08:26

+1

正确 - 当事件本身与鼠标活动有关时,您只能获取鼠标信息。 – Pointy 2015-03-30 20:09:28

+0

你可以跟踪鼠标所有的时间...也许在一个时间间隔,并返回它的位置上卸载 – Huangism 2015-03-30 20:11:50

回答

0

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

检测到用户关闭了页面,JS是不可能的 - 你可以检测,如果他们离开的页面,这可能意味着很多东西(点击一个链接,关闭浏览器,输入地址,打开一个书签,按下Alt + F4 ...)。鼠标位置不能用于确定用户离开页面的方式,因为他可以使用其他形式的浏览器(触摸屏,游戏控制台,命令行浏览器,任何没有鼠标的浏览器......)和按钮可能位于完全不同的位置。

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