我有一个表单,其中输入字段保存为onChange。在Firefox(5)中,即使关闭了窗口,此方法仍然有效,但对于Chrome和IE则不起作用,即使他们在输入后尝试关闭窗口,我也必须确保我保存了这些数据一个字段,但是没有发生onBlur事件(即,他们已经在文本框中键入了一些内容,但是没有在其中跳出标签)。

我已阅读以下有关window.onbeforeunload的文章:
article 1
article 2

如果我使用以下内容:

window.onbeforeunload = function() {
    return "onbeforeunload";
}

然后我得到一个带有onbeforeunload的弹出窗口。

但是如果我尝试:
window.onbeforeunload = function() {
    alert("onbeforeunload");
}

那么任何浏览器,甚至Firefox都不会发生任何反应。

我想要实现的是:
window.onbeforeunload = function() {
    saveFormData();
}

如果有人能指出我可能会出问题的地方,我将不胜感激。

最佳答案

您必须从returnonbeforeunload:

window.onbeforeunload = function() {
    saveFormData();
    return null;
}

function saveFormData() {
    console.log('saved');
}

更新

根据评论,警报似乎不再适用于较新的版本,其他任何事情都会发生:)

来自MDN



还建议通过addEventListener接口(interface)使用它:



现在,更新后的代码将如下所示:
window.addEventListener("beforeunload", function (e) {
  saveFormData();

  (e || window.event).returnValue = null;
  return null;
});

关于javascript - 捕获window.onbeforeunload,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29680950/

10-12 15:32