如何为单页应用程序实现ISDirty标志onleave?
-
11-12-2019 - |
题
我有一个在mvc4中编写的单页应用程序,它使用 pjax()将HTML推入我的页面中的各种s。我有一个子形式,允许用户编辑数据,如果用户更改数据,则在JavaScript中设置了ISDirty标志以触发页面底部的警报,则存在未保存的更新。当用户尝试离开页面而不保存时,我还想实现额外的警告。如果我使用像这样的传统的onbeforeunload函数
window.onbeforeunload = function() {
if (isDirty) {
return 'You have unsaved changes!';
}
return null;
};
.
如果我尝试完全关闭网页或远离网站,则调用警报,但如果用户单击我的链接重新填充具有一些不同信息的链接,则因为您实际上没有触发,则无法触发它这页纸。如何架构师才能架构它,以便其中一个PJAX()链接会导致类似于我关闭页面的警报?
解决方案
您可以订阅PJAX请求前触发的全局事件:
$(document).on('pjax:beforeSend', function() {
if (isDirty) {
return confirm('You have unsaved changes! Are you sure you want to continue?');
}
return true;
});
. 其他提示
您可以将委派事件处理程序添加到页面中的链接上。您只需确保处理程序绑定到可能加载“新页面”的链接。
不隶属于 StackOverflow