事件在加载之前时的未定义位置
Undefined position when event is beforeunload
嗨,我有这段代码,当我试图卸载页面时,我试图获取鼠标位置。
每次我运行代码和警报时,都会给我一个未识别的值。
这是我的输出,
<!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,并在服务器上设置一个非活动计时器。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 事件在加载之前时的未定义位置
- 为什么&此脚本返回的位置未定义
- 检查数组位置是否真的未定义
- getElementsByTagName 为空或未定义,仅在 IE 中 - 并且仅在函数中的一个特定位置
- 如何删除未定义的对象错误并根据位置重定向用户
- PHP 函数未定义错误和语法错误, 在生成的 HTML 中放错位置
- 电话间隙上的地理位置返回未定义
- 错误“JavaScript 运行时错误:查找滚动位置时无法获取未定义或空引用的属性'scrollLeft'”
- JQuery - 未捕获的引用错误:未定义地理位置
- dat.GUI自定义位置未显示
- 未捕获的类型错误:无法读取属性'位置'的未定义
- 如何将一个数组的内容迭代到另一个数组的空/未定义位置
- 设置当前位置时,位置返回未定义
- home iframes位置未定义不再工作
- Backbone Js-设置地理位置变量[未定义变量]
- Chrome:未捕获类型错误:无法读取属性'位置'的未定义
- 地理位置侦听器[listenerFunc]未定义
- 谷歌地图自动完成位置未定义
- 更改位置时,单击中的.hash将变为未定义