繁体   English   中英

JavaScript-用户确认离开页面后运行代码

[英]JavaScript - Run code when user confirms leaving page

我希望用户确认他要离开该页面。 我用jQuery这样做:

$(window).bind('beforeunload', function(){ 
    return "Are you sure?";
});

如果用户说“是”,那么我想运行一个函数,该函数在关闭浏览器选项卡之前发出ajax请求以保存一些数据。 这可能吗? 在那种情况下又如何呢?

您的要求是不可能的。 beforeunload不允许您自己进行提示,然后根据问题的答案进行分支。 它仅允许您运行代码或返回提示字符串,该提示字符串仅确定用户是否离开页面。

在您的特定情况下,我建议您始终在获取此回调时保存数据(例如在文字处理器中自动保存)。 如果用户选择停留在页面上并进行更多更改,则可以在以后离开页面时再次保存数据的新状态。 您将必须仔细测试几个浏览器,以确保在beforeunload处理程序中启动的ajax调用将正确完成。 看起来应该如此,但浏览器之间的实现可能有所不同。


仅供参考, beforeunload之所以如此严格,是因为它必须防止恶意网页滥用,以防止您在需要时离开其网站。

正如jfriend00提到的那样,您尝试执行的操作是不可能的。 您最好还是在他们按下返回按钮时感到悲观。 我的意思是:

$(window).bind('beforeunload', function(){ 
    $.ajax({
        //Do ajax call to save
    });
    return "Are you sure?";
});

希望这样做是为了给您的ajax调用发送时间,并将新数据通知服务器。 我之所以希望如此,是因为当您离开页面时,浏览器会杀死所有请求。

请记住,当用户强行关闭浏览器时,不会触发此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM