我想在用户关闭当前网站的最后一个标签时打开一个弹出窗口。我遇到的问题是
onbeforeunload
返回非空值)时,浏览器会阻止弹出窗口(参见下面的案例1)onbeforeunload
没有返回任何内容)时,弹出窗口根本没有打开,似乎被浏览器完全忽略了(为什么会这样?)(见案例) 2下方)案例1:阻止提示和弹出窗口(代码来自this answer)
window.onbeforeunload = function (e) {
e = e || window.event;
window.open('http://localhost', '_blank');
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
// For Safari
return 'Sure?';
};
案例2:没有提示,没有弹出窗口,页面关闭“正常”
window.onbeforeunload = function (e) {
e = e || window.event;
window.open('http://localhost', '_blank');
};
答案 0 :(得分:1)
如果满足以下任何条件,则允许算法显示弹出窗口
运行算法的任务当前正在处理其点击事件受信任的激活行为。
关闭窗口不是点击事件。
运行算法的任务当前正在为可信事件运行事件侦听器,其类型在以下列表中:
unload
不在该列表中。
运行算法的任务由允许显示弹出窗口的算法排队,此类算法链在用户代理定义的时间范围内启动。
例如,如果用户点击了一个按钮,那么弹出窗口可能会在4秒后产生,但是4小时后弹出窗口可能是不可接受的。
再一次,没有。任务没有排队。
无法打开弹出窗口以响应用户尝试离开您的网站。它会启用太多有害行为(点击此广告,退出,弹出,您必须点击此广告,循环)。
答案 1 :(得分:-1)
这是我的代码:
var popWindow = true;
window.onbeforeunload = function() {
if(popWindow == true) {
popWindow = false;
return "Sure?";
}
}