我想检测浏览器/选项卡关闭事件。我在jQuery和Javascript中都尝试过“beforeunload”、“unload”等。在选项卡/浏览器上工作的解决方案将关闭,并在重新加载页面时关闭。
在jQuery/Javascript中是否可以检测选项卡/浏览器关闭事件?在重新装载时不会开火。
在“重新加载”和“选项卡/浏览器关闭”两种情况下,都需要执行以下操作
var inFormOrLink;
$(window).bind("beforeunload", function () {
return inFormOrLink ? "Do you really want to close?" : null;
});
和
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "werwerew";
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
});
我也一直在与“卸载”和“卸载前”事件作斗争,以检查标签关闭,但如果页面使用文档中提交的任何链接或表格刷新,这些功能也会启动。所以我找到了下面这段代码,它对我有效。它将防止在锚点击和表格提交时启动“之前卸载”事件。
此代码的缺点是,它仍然无法区分用户是否按F5或浏览器刷新按钮或后退按钮。但我希望它能在某种程度上帮助你或任何其他人
//Message you wish to display upon closing tab window
var exitmessage = 'Are you sure you want to leave the site?';
//Load Event fires up on every body load
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
} func(); }
}
}
// Add a click event to a tag
function addClickEvent(a,i,func) {
if (typeof a[i].onclick != 'function') {
a[i].onclick = func;
}
}
theBody = document.body; if (!theBody) {
theBody = document.getElementById("body");
if (!theBody) {
theBody = document.getElementsByTagName("body")[0];
}
}
//Set a variable to prevent running the code on links visit or form submit
var PreventExit = false;
//The actual function that works on tab close or when the beforeunload function is fired
function DisplayExit(){
if(PreventExit == false){
PreventExit = true;
//run whatever code you want to run here. We are just displaying an alert message
return exitmessage;
}
}
//Search for A tags and prevent running the unload event
var a = document.getElementsByTagName('A');
for (var i = 0; i < a.length; i++) {
if(a[i].target !== '_blank') {
addClickEvent(a,i, function(){
PreventExit = true;
});
} else{
addClickEvent(a,i, function(){
PreventExit = false;
});
}
}
disablelinksfunc = function(){
var a = document.getElementsByTagName('A');
for (var i = 0; i < a.length; i++) {
if(a[i].target !== '_blank') {
addClickEvent(a,i, function(){
PreventExit = true; });
} else{
addClickEvent(a,i, function(){
PreventExit = false;
});
}
}
}
addLoadEvent(disablelinksfunc);
//Disable event to fire up on a FORM submit
disableformsfunc = function(){
var f = document.getElementsByTagName('FORM');
for (var i=0;i<f.length;i++){
if (!f[i].onclick){
f[i].onclick=function(){
PreventExit = true;
}
}else if (!f[i].onsubmit){
f[i].onsubmit=function(){
PreventExit = true;
}
}
}
}
addLoadEvent(disableformsfunc);
window.onbeforeunload = DisplayExit;
这实际上是意料之中的
window.onbeforeunload = function (event) {
var message = 'You are about to close the browser window';
if (typeof event == 'undefined') {
event = window.event;
}
if (event) {
event.returnValue = message;
}
return message;
};
$(function () {
$("a, button, input[type='submit']").click(function () {
window.onbeforeunload = null;
});
});
或者,如果您希望以更好的方式实现浏览器关闭功能,请选择JQuery Popup
问题内容: 嗨,我想知道如何在浏览器选项卡关闭时提示消息。我正在使用Reactjs。 这是我尝试添加到我的react组件中的内容。请指导我如何继续进行。 问题答案: 除了事件名称和警报将在该特定事件中阻止这一事实之外,您所做的都是正确的。 您可以显示如下消息: 希望这可以帮助。
我的目标是在浏览器选项卡关闭时删除用户cookie。 有可能吗?我可以处理浏览器标签关闭事件没有刷新情况? 如果我在用户刷新页面时使用或事件触发的函数,我不想这样,我只想在关闭选项卡时运行。 我怎样才能做到这一点?
我转到了此链接我如何在Angular中处理浏览器选项卡关闭事件?只关闭,不刷新 但我不知道如何在Angular 4中实现这一点。 我无法识别页面何时刷新以及选项卡或浏览器何时关闭。 因为在这两种情况下,它都会触发“window:unload”和“window:beforeunload”事件,所以很难识别。 实际上,我想在浏览器或选项卡关闭时触发注销事件,但在刷新时也会触发。 下面是我的代码。 任何
问题内容: 我的目标是在浏览器选项卡关闭时删除用户cookie。 可能吗?我可以在没有刷新情况下处理浏览器选项卡关闭事件吗? 如果我使用或事件,则当用户刷新页面时会触发函数,我不希望这样,我只想在关闭选项卡时运行。 如何在Angular中做到这一点? 问题答案: 可悲的是,这不是一个简单的问题要解决。但这是可以完成的。以下答案是由许多不同的SO答案合并而成的。 简单的部分: 知道该窗口已被破坏。您
我想捕获浏览器窗口/选项卡关闭事件。我尝试了以下方法,但不起作用: 尝试了这些链接,但没有更多的成功。 JavaScript检查浏览器窗口何时关闭 如何捕获浏览器窗口关闭事件? javascript检测浏览器关闭标签/关闭浏览器 尝试检测浏览器关闭事件 问题: 我只想检测浏览器关闭事件,并在不向用户显示提示的情况下对此进行一些处理。 我尝试过很多方法,通过jQuery或JavaScript检测浏览
本文向大家介绍关闭浏览器窗口/选项卡时如何删除localStorage项目?,包括了关闭浏览器窗口/选项卡时如何删除localStorage项目?的使用技巧和注意事项,需要的朋友参考一下 要在浏览器关闭时清除localStorage数据,可以使用window.onunload事件检查选项卡关闭。 假设为了这个示例,您有一个名为MyStorage的本地存储对象作为全局对象。然后您可以编写一个事件处理