2017-02-19 10 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>