我的问题是在我单击"更新面板"中的按钮并关闭窗口," nunload"事件不是fire,而当我单击另一个按钮时,此事件会正确触发。这是我的代码:
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,然后关闭浏览器,然后关闭未执行的登录代码。
我怎么解决这个问题?
您必须在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
}
});
在更新面板的结束标签之前添加'触发器'标签
<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>