javascript - 使用 javascript 检测页面卸载

标签 javascript jquery

我有一个取消按钮,它执行 ajax,然后刷新页面内容,当离开时我想触发该按钮,但我不希望它刷新 UI 中的任何内容。

我想过使用一个全局变量,放置在窗口对象中,但这看起来不太好:

$(".cancel").bind("click", function(e) {
    e.preventDefault();
    tellTheServerThatUserCanceled(); // ajax call
    if (!isUnloading) refreshUI();
});

$(window).bind("unload", function(e) {
    isUnloading = true; // this is disgusting, I don't want to do this
    $(".cancel").trigger("click");
}

有没有官方的方法,或者其他更优雅的方法,或者我不应该担心使用全局变量?

编辑: unload 事件代码不知道它到底必须做什么,因为页面可以有多个编辑面板,以及多个取消按钮。它只知道它必须触发每个面板的取消按钮。

最佳答案

我发现最好不要在 jQuery 的匿名函数中运行代码,而是让它们调用可共享的函数。这样的事情说明了总体想法:

function doCancel(e, isUnloading){
    e.preventDefault();
    tellTheServerThatUserCanceled(); // ajax call
    if (!isUnloading) refreshUI();
}

$(".cancel").bind("click", function(e) {
    doCancel(e, false);
});

$(window).bind("unload", function(e) {
    doCancel(e, true);
}

关于javascript - 使用 javascript 检测页面卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798187/

相关文章:

javascript - jQuery 是否支持 Canvas ?

javascript - 如何将大量的HTML表单输入发送到Flask?

javascript - ejs:仅将类 'active' 添加到图片库的第一张图片

javascript - onclick 函数调用在 apache cordova(版本 6.1.1)中不起作用

javascript - 如何在第一次点击后禁用此按钮 5 秒?

javascript - 如何在 URL 查询字符串中存储程序状态?

c# - 获取访问您网站的每个用户的 IP 地址和位置

javascript - 是否可以在 jQuery.each() 内部使用同步 promise sleep ?

jquery - 如何防止 anchor 标记跟随点击链接,但让它显示子菜单?

javascript - 将对象数组与 id 数组进行比较