1. ホーム
  2. javascript

window.onbeforeunload と window.onunload がFirefox、Safari、Operaで動作しない?

2023-08-21 05:43:18

質問

チャットアプリケーションで、アプリケーションが終了したときに、ユーザーから確認を得る必要があります。

そこで、私は window.onbeforeunload を確認アラート用に、そして window.onunloadlogout() .

  1. しかし、IEとChromeではどちらの機能も動作しています。(アプリケーションは問題なく動作します)

  2. window.onbeforeunload はOperaでは動作せず、Firefoxでは私のメッセージは表示されません。

  3. window.onunload は、Safari、Opera、Firefox で動作しません。

私のJavaScriptのコードは、次のようになります。

// Used for confirmation, to closing the window 
window.onbeforeunload = function () {

    return  "Are you sure want to LOGOUT the session ?";
}; 

// Used to logout the session, when browser window was closed 
window.onunload = function () {

    if((sessionId != null)&&(sessionId!="null")&& (sessionId != ""))
        logout();
};

また、同じ機能をJQueryで試してみました。

<script type="text/javascript">

    $(window).on('beforeunload', function() {
        return 'Are you sure want to LOGOUT the session ?';
    });

    $(window).unload(function() {
        if ((sessionId != null) && (sessionId != "null") && (sessionId != "")) {
            logout();
        }
    });
    
</script>

どのように解決するのですか?

私は onunload を同期リクエストに変更することで、Operaを除くすべてのブラウザで解決しました。

xmlhttp.open("POST","LogoutAction",false);

を除くすべてのブラウザでうまく動作します。 オペラ .