2017-02-19 63 views
0

我的问题是我点击更新面板中的按钮并关闭窗口后,“beforeunload”事件不会触发,而当我点击另一个按钮时,此事件正常触发。 这里是我的代码:javascript“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,然后关闭我的注销代码不执行该浏览器。
我该如何解决这个问题?

+0

的[可能的复制window.onbeforeunload不工作](http://stackoverflow.com/questions/7255649/window-onbeforeunload-not-working) –

回答

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 
    } 
    }); 
+0

由它确认窗口显示,但我的问题没有解决 – saeid6366

0

的回调函数只是更新面板的结束标记前添加了“触发器”标签

<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> 
相关问题