我有一个在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;
});
.

其他提示

您可以将委派事件处理程序添加到页面中的链接上。您只需确保处理程序绑定到可能加载“新页面”的链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top