我正在使用ASP.NET MVC 3和jquery 1.9。
我有一个小型系统来检测用户是否在导航之前在屏幕上进行了更改。
我在视图中的脚本标记中有以下代码(setChangesMade函数只设置一个表示在屏幕上进行了更改的全局变量):
$(function ()
{
$(window).bind('beforeunload', function ()
{
//Prompt the user to save changes if we have identified any as being unsaved.
setChangesMade(true);
if (changesMade)
{
return 'You have unsaved changes. Do you want to leave the page without saving changes?';
}
});
});
如果我在屏幕上进行更改,然后单击链接,此代码可以正常工作。在消息之后,用户可以单击“确定”以导航并丢失更改或取消以保持放置。当使用页面上的链接导航时,这两种方案都很完美。
但如果我使用以下内容离开:
var url = ScriptResolveUrl("~/MyController/MyActionMethod");
$(location).attr('href', url);
消息框仍然按预期弹出。如果用户单击“确定”,则会按预期成功导航。但是,如果用户在消息框中单击“取消”并决定保留在页面上,则会引发未知的jquery错误。没有关于错误的信息。它只是说第3行的jquery错误。
为什么单击链接时这个工作完全正常,但在使用jquery重定向时却不行?