Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Window.onbeforeunload和u dopostback不能正常工作_Javascript_Asp.net_Onbeforeunload_Dopostback - Fatal编程技术网

Javascript Window.onbeforeunload和u dopostback不能正常工作

Javascript Window.onbeforeunload和u dopostback不能正常工作,javascript,asp.net,onbeforeunload,dopostback,Javascript,Asp.net,Onbeforeunload,Dopostback,首先,我对Web表单和JavaScript还不熟悉,我花了两天时间在谷歌上搜索,没有结果。在用户退出页面之前,我试图询问用户是否要保存输入的数据。我有一个文本框,它告诉我是否执行了任何应该触发javascript if语句的输入。如果用户使用页面中包含的控件离开页面,则我的代码将正常工作。当他们单击右上角的X或选择“文件/退出”时,该选项不起作用。下面是我的代码 <script type="text/javascript" > var needToConfirm

首先,我对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>
我在上面的代码中有两个_udopostback语句,但是,直到代码的其余部分完成后,才真正发生回发。这意味着if语句失败,因此保存表单永远不会打开

如果你能给我任何帮助,我将不胜感激

您不应该从代码中调用doPostBack

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

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


因此,您的程序永远不会达到再次调用doPostBack的程度

我把它们放进去是为了捕捉X和文件/退出事件。我以前使用代码隐藏打开保存表单。我有一些文本框,如果使用X或文件/出口,则不会激活其ContextChanged事件,因此我尝试了另一个路由。谢谢你能用伪代码解释一下当视图关闭时你想要完成什么吗。如果表单中出现了输入对不起,点击返回键。。。如果表单中发生了输入,我希望通过Postback后面的代码将隐藏的文本字段从False更改为True,并打开保存表单。如果没有输入,我希望浏览器退出。现在,如果用户在文本字段中并点击X或文件/出口,则不会发生最终回发。请查看本文: