基本上我想要做的是,每当用户试图关闭当前标签时(当他在我的网站上时),我想显示一个弹出窗口,其中有三个选项,说明他要离开的原因并想要存储选择一些
所以我在main.js
中写了以下内容,将通过整个网站页面加载
$(document).ready(function() {
// Before closing the current tab, ask user for a reason
$(window).on('beforeunload', function(event){
$('#load_choices_up').click();
event.stopPropagation();
event.preventDefault();
debugger;
});
});
所以我对上面的jquery代码有三个问题
*。即使我点击同一页面上的另一个链接(我的意思是如果我从当前页面导航到另一个页面),此代码仍在执行,但我只希望此代码在当前选项卡/页面时运行完全关闭(即将关闭),但在导航到我网站上的其他网页时却没有关闭
*。在执行此行$('#load_choices_up').click()
之后,弹出的选项按预期打开,但是立即默认处理浏览器(即关闭功能)没有停止,有两行event.stopPropagation();
和{{1} },我的意思是这两种停止行为的方法不起作用,浏览器关闭,但我想根据用户选择输入进行一些处理,然后根据我将关闭标签。
*。当我使用event.preventDefault();
而不是弹出选项时,浏览器会根据浏览器类型显示不同的消息,例如"您有未保存的更改"在chrome中,以及firefox中的一些不同消息,而不是显示我的自定义消息
最后,为什么return "Why do you want to leave the page"
和event.stopPropagation();
无效?为什么我无法显示自定义信息?
答案 0 :(得分:1)
您无法阻止某人关闭浏览器。这是出于明显的安全原因。想象一下,一个垃圾邮件网站阻止你关闭网站,同时向你充满了神知道什么。
您最多可以使用alert()
或prompt
这样的功能。用户关闭它们后,该选项卡将以任一方式关闭。
beforeUnload
也非常短暂。您将无法使用它运行大量脚本,因为用户可能会在任何脚本正常运行之前关闭水龙头。 (我尝试使用ajax调用,但没有工作)
因此,即使您能够在那里获得所需的选项,当用户选择其中一个选项时,您也无法将其保存在任何地方。你的剧本永远不会那么远。
您可以自定义“你确定吗?”像这样的消息:
$(document).ready(function() {
window.onbeforeunload = function(e) {
return 'Dialog text here.';
};
});
但同样,您只能更改文字。它是浏览器的本机功能,您无法更改它。