javascript" beforeunload"当我使用更新面板时,事件不会触发

时间:2017-02-19 18:29:20

标签: javascript asp.net updatepanel

我的问题是在我点击更新面板中的按钮并关闭窗口后," beforeunload"事件不会触发,而当我点击另一个按钮时,此事件会正常触发。 这是我的代码:

function dontlogout() //for postback refreshes
{
    postback = true;
    alert(postback);
}
$(window).bind('beforeunload',function() {

    if(postback==false)
    {   
       //my logout code here;

    }

    else
    {
        postback = false;
     }
    });  
<asp:Button runat="server" ID="cmdOut"  OnClientClick="dontlogout();" Text="next"  OnClick="cmdOut_Click"></asp:Button>

<asp:UpdatePanel runat="server" ID="updQuestion"   >
    <ContentTemplate>                         
<asp:Button runat="server" ID="cmdNext"  OnClientClick="dontlogout();"      Text="next" OnClick="cmdNext_Click"></asp:Button>

 </ContentTemplate></asp:UpdatePanel> 

当我点击cmdOut按钮没有问题,当关闭浏览器我的注销代码执行时,但是当我在更新面板中单击cmdNext然后关闭浏览器时我的注销代码未执行。
我怎么解决这个问题?

2 个答案:

答案 0 :(得分:0)

您必须返回onbeforeunload

的函数回调
$(window).bind('beforeunload',function() {

    if(postback==false)
    {   
       //my logout code here;

      //  Ok you can leave because you dont return
    }

    else
    {
        postback = false;
        return  "You cannot leave";  // You cannot leave
     }
    });  

答案 1 :(得分:0)

添加&#39;触发器&#39;标记在更新面板的结束标记之前

<asp:UpdatePanel runat="server" ID="updQuestion"   >
    <ContentTemplate>                         
<asp:Button runat="server" ID="cmdNext"  OnClientClick="dontlogout();"      Text="next" OnClick="cmdNext_Click"></asp:Button>

 </ContentTemplate>
 <Triggers>
       <asp:PostBackTrigger ControlID="cmdNext" />
  </Triggers>
</asp:UpdatePanel>