0

我有一个用 MVC4 编写的单页应用程序,它使用pjax()将 html 推送到我页面中的各种 s 中。我有一个允许用户编辑数据的子表单,如果用户更改数据,则在 javascript 中设置 isDirty 标志以触发页面底部存在未保存更新的警报。当用户尝试离开页面而不保存时,我还想实施额外的警告。如果我使用这样的传统 onbeforeunload 函数

window.onbeforeunload = function() {
    if (isDirty) {
        return 'You have unsaved changes!';
    }
    return null;
};

如果我尝试关闭页面或完全离开该站点,它会调用警报,但是如果用户单击我的一个链接,该链接重新填充了一些不同的信息,它不会触发,因为您实际上并没有离开页面。我如何构建它,以便这些 pjax() 链接之一引起类似于如果我关闭页面的警报?

4

2 回答 2

2

您可以订阅在 pjax 请求之前触发的全局事件:

$(document).on('pjax:beforeSend', function() { 
    if (isDirty) {
        return confirm('You have unsaved changes! Are you sure you want to continue?');
    }
    return true;
});
于 2012-05-18T16:52:22.430 回答
0

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

于 2012-05-19T01:10:58.667 回答