故障排除前载确认呼叫

时间:2014-02-12 11:12:14

标签: javascript jquery onbeforeunload

我的代码:

//hold window open on form change
window.onbeforeunload = function(e) {
    if(formChanges > 0) {
        if(formData != initFormData) {
            if(confirm('here')) {
                e.preventDefault();
            }
            else {
                e = null;
            }
        }
        else {
            e = null;
        }
    }
    else {
        e = null;
    }
};

三个变量(formChangesformDatainitFormData)都正确填充,很少有测试表明它们在函数中被正确读取。问题是页面卸载了什么,并且没有出现确认对话框。

控制台日志在被卸载之前会闪烁片刻(我似乎无法将其内容写入文件)并且我可以看到消息Blocked confirm 'here' during beforeunload,但在我可以访问它之前它已经消失了。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

使用onbeforeunload时,你必须返回一个字符串,如下所示:

window.onbeforeunload = function(e) {
  return 'Dialog text here.';
};

来源:https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload