Window.onbeforeunload和__dopostback无法正常协同工作

时间:2014-07-24 14:57:49

标签: javascript asp.net onbeforeunload dopostback

首先,我是Web表单和JavaScript的新手,我花了两天时间用谷歌搜索没有结果。我想在用户退出页面之前询问用户是否要保存他们输入的数据。我有一个文本框,告诉我是否已经执行了任何应该触发javascript if语句的输入。如果用户使用页面中包含的控件离开页面,我的代码将正常工作。单击右上角的X或选择文件/退出时,它无法正常工作。以下是我的代码。

     <script type="text/javascript" >
     var needToConfirm = "False";
     var hdnNeedToConfirm = ""
     window.onbeforeunload = confirmExit;
     function confirmExit() {
         __doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("PADForm").ClientID %>', '');
         __doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("HiddenPanel").ClientID %>', '');
         hdnNeedToConfirm = document.getElementById('<%= Page.Master.FindControl("MainContent").FindControl("HdnNeedToConfirm").ClientID %>');
         if (hdnNeedToConfirm != null)
             needToConfirm = hdnNeedToConfirm.value;
         else
             needToConfirm = "False";
         if (needToConfirm == "True")
             window.open("SaveOrLose.aspx");
     }
</script>

我在上面的代码中有两个__dopostback语句,但是在其余代码发布之后,回发实际上并没有发生。这意味着if语句失败,因此永远不会打开Save表单。

我很感激你能给予的任何帮助!!

1 个答案:

答案 0 :(得分:0)

您不应该从代码中调用__doPostBack()

这是一个只能由ASP.NET Web Forms调用的函数来调用服务器端事件/代码。

如果您检查__doPostBack()函数的实现,您会注意到它提交了一个HTML表单。

因此,您的程序永远不会达到第二次调用__doPostBack()的程度。