我的代码:

//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 ,但在我访问它之前它就消失了。任何帮助表示赞赏!

最佳答案

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

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

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

关于javascript - beforeunload 确认调用故障排除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21726301/

10-11 11:19