我的问题是在我点击更新面板中的按钮并关闭窗口后," 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 :(得分: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>