只有在功能成功完成后才卸载页面

  • 本文关键字:卸载 功能 成功 javascript
  • 更新时间 :
  • 英文 :


我有以下代码

var _this = this;
window.addEventListener("beforeunload", function(e) {
    _this.save(form);
});

是否可以在保存功能完成后才卸载页面?它似乎在75%的时间内工作,但在某些情况下,它会在有机会保存之前卸载。

My save function

Navigation.prototype.save = function(form) {
    if(!this.check_completed()) {
        this.handle_percentage();
        this.strip_space(form);
        form[0].getElementsByClassName("gform_save_link")[0].click();
    }
}

简短回答:不,你不能确定浏览器会卸载,只有,如果代码完成。

长答案:在我看来,卸载方法的行为是非常不一致的,从浏览器到另一个,从一次到另一个。

我在一个基准测试之前尝试过,这表明通常(并不总是)浏览器会尝试完成指示的步骤,但这似乎并不能阻止它继续前进(关闭,重定向到另一个URL)。

我建议让用户知道他要离开了(是的,你将不得不使用一个看起来很尴尬的弹出消息——使用:alert/confirm/或者简单地返回一个字符串),如果用户选择离开,那就结束了。

beforeunload事件是您可以在浏览器关闭或选项卡关闭之前实际执行一些事件的地方。因此,如果您希望保存函数工作,最好同步地进行ajax调用。我想这可能对你有帮助。

最新更新