一尘不染

如何知道用户是否在卸载对话框之前单击了Java上的“取消”?

javascript

当有人尝试导航到特定页面而不保存其工作时,我弹出一个对话框。我使用Javascript的onbeforeunload事件,效果很好。

现在,当用户在出现的对话框中单击“取消”时,我想运行一些Javascript代码(假设他们不想离开页面)。

这可能吗?我也使用jQuery,所以可能会发生像beforeunloadcancel这样的事件可以绑定到吗?

更新 :的想法是实际上将用户保存并定向到其他网页(如果他们选择了取消)


阅读 209

收藏
2020-05-01

共1个答案

一尘不染

您可以这样做:

$(function() {
    $(window).bind('beforeunload', function() {
        setTimeout(function() {
            setTimeout(function() {
                $(document.body).css('background-color', 'red');
            }, 1000);
        },1);
        return 'are you sure';
    });
});

setTimeout一种方法中的代码具有1ms的延迟。这只是将函数添加到中UIqueue。由于setTimeout异步运行,因此Javascript解释器将继续通过直接调用该return语句来继续,从而触发浏览器modaldialog。这将阻止UIqueue和,从第一个开始的代码将setTimeout不执行,直到关闭模式。如果用户按下“取消”,它将触发另一个setTimeout,它会在大约一秒钟后触发。如果用户单击确定确认,则用户将重定向并且永不触发第二个setTimeout。

2020-05-01