是否有任何跨浏览器的 JavaScript/jQuery 代码来检测浏览器或浏览器选项卡是否被关闭,但不是由于点击了链接?
检测浏览器或选项卡关闭
IT技术
javascript
jquery
2020-12-21 16:24:45
6个回答
如果我理解正确,您想知道标签/窗口何时有效关闭。好吧,AFAIKJavascript
检测这种东西的唯一方法是onunload
&onbeforeunload
事件。
不幸的是(或者幸运的是?),当您通过link
浏览器的后退按钮离开站点时,这些事件也会被触发。所以这是我能给出的最好的答案,我认为你不能close
在 Javascript中原生地检测到纯。如果我在这里错了,请纠正我。
来自MDN 文档
由于某些原因,基于 Webkit 的浏览器不遵循对话框的规范。一个几乎交叉工作的例子与下面的例子很接近。
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "\o/";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Webkit, Safari, Chrome
});
此示例用于处理所有浏览器。
简单的解决方案
window.onbeforeunload = function () {
return "Do you really want to close?";
};
<body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()">
var myclose = false;
function ConfirmClose()
{
if (event.clientY < 0)
{
event.returnValue = 'You have closed the browser. Do you want to logout from your application?';
setTimeout('myclose=false',10);
myclose=true;
}
}
function HandleOnClose()
{
if (myclose==true)
{
//the url of your logout page which invalidate session on logout
location.replace('/contextpath/j_spring_security_logout') ;
}
}
//这在 IE7 中有效,如果您关闭选项卡或只有一个选项卡的浏览器
对于类似的任务,您可以使用sessionStorage
本地存储数据,直到关闭浏览器选项卡。
该sessionStorage
对象仅存储一个会话的数据(关闭浏览器选项卡时数据将被删除)。(W3Schools)
<div id="Notice">
<span title="remove this until browser tab is closed"><u>dismiss</u>.</span>
</div>
<script>
$("#Notice").click(function() {
//set sessionStorage on click
sessionStorage.setItem("dismissNotice", "Hello");
$("#Notice").remove();
});
if (sessionStorage.getItem("dismissNotice"))
//When sessionStorage is set Do stuff...
$("#Notice").remove();
</script>
其它你可能感兴趣的问题