【发布时间】:2017-11-27 02:01:15
【问题描述】:
您好,我已经阅读了很多关于该主题的其他帖子,但仍然感到困惑。我只想在我的页面被卸载之前实现两件简单的事情。
- 如果有任何未保存的数据,请保存。询问是/否以保存它(使用确认())
- 保存页面上的当前选择
我是这样做的。
window.onbeforeunload = function (e) {
var model = _selectedClassNodes + ";" + _selectedIndicatorNodes + ";" + _selectedNode + ";" + _pageHeaderId;
$.ajax({
url: "@Url.Action("SaveDefaultSettings", "Maps")",
type: 'get',
data: { defaultSettings: model },
success: function (data) {
}
});
//if some unsaved data exists
if (editedRows.length > 0) {
if (confirm("Do you wish to save changes before continuing? CLick 'OK' for 'Yes' and 'Cancel' for 'No'")) {
SaveGridData();
}
}
};
SaveDefaultSettings 总是被触发,因为我使用断点进行了调试,但没有出现确认框。
据我所知,confirm() 之前工作正常,但今天我注意到它已停止工作。我正在使用 chrome v 62.0
如果我将代码更改为
window.onbeforeunload = function (e) {
return "Do you wish to save changes before continuing? CLick 'OK' for 'Yes' and 'Cancel' for 'No'";
var model = _selectedClassNodes + ";" + _selectedIndicatorNodes + ";" + _selectedNode + ";" + _pageHeaderId;
$.ajax({
url: "@Url.Action("SaveDefaultSettings", "Maps")",
type: 'get',
data: { defaultSettings: model },
success: function (data) {
}
});
};
现在默认对话框显示“您所做的更改可能不会保存”重新加载/不重新加载
【问题讨论】:
-
您不能在 beforeunload 中使用任何阻塞代码,例如警报或确认。多年来,它被滥用了很多浏览器供应商不得不限制它的功能......甚至在大多数浏览器中不显示自定义消息的程度
标签: javascript ajax asp.net-mvc-4 confirm