我的代码:
//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;
}
};
三个变量(formChanges
,formData
和initFormData
)都正确填充,很少有测试表明它们在函数中被正确读取。问题是页面卸载了什么,并且没有出现确认对话框。
控制台日志在被卸载之前会闪烁片刻(我似乎无法将其内容写入文件)并且我可以看到消息Blocked confirm 'here' during beforeunload
,但在我可以访问它之前它已经消失了。任何帮助表示赞赏!
答案 0 :(得分:4)
使用onbeforeunload时,你必须返回一个字符串,如下所示:
window.onbeforeunload = function(e) {
return 'Dialog text here.';
};
来源:https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload