2

ユーザーがブラウザを閉じる際に「ログアウトしますか?」と確認したい。はいの場合、ログオフ コードを実行し、「ログオフされています」というメッセージを表示します。いいえの場合は、何もしないでください。

以下は私が使用しているコードです:

window.onbeforeunload = closeit; 

function closeit(e) {
    var closeEvent = false;
    if (event.clientY < 0)
        closeEvent = true;

    if ((closeEvent)) {


      var response = confirm("Are you sure you want to log-off?");

        if(response == true){
            var swf = "SWFAPP";
            var container;
            if (navigator.appName.indexOf("Microsoft") >= 0)
            {
                container = document;
            }
            else
            {
                container = window;
            }
            container[swf].logOutUser();
            alert("Logged off");
        }
        else{

        }

     }
 }

上記のコードは機能せず、[OK] または [キャンセル] をクリックしてもブラウザが閉じます。[OK] をクリックすると、「ログオフ」という警告メッセージは表示されません。

確認行を削除して、応答が常に true であると言うと、ログオフ コードが実行され、「ログオフ」というメッセージが表示されます。Container.logOutUser は、DB のユーザー ステータスを更新します。

4

2 に答える 2

0

イベントにはプロパティonbeforeunloadがないため、常に になります。clientYcloseEventfalse

イベントのreturnValueプロパティは、ページのアンロードを防ぐように設定する必要がありますが、ブラウザはユーザーにプロンプ​​トを表示して最終的な決定を保持します。参照: https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

window.onbeforeunload = closeit; 

function closeit(e) {
    if (confirm("Are you sure you want to log-off?")) {
        var container;
        if (navigator.appName.indexOf("Microsoft") >= 0)
        {
            container = document;
        }
        else
        {
            container = window;
        }
        container[swf].logOutUser();
        alert("Logged off");
    }
    else{
        e.returnValue='Log-off cancelled.';
    }
}
于 2012-08-10T17:17:25.660 に答える
0
window.onbeforeunload = function (evt) { 
 evt = window.event;
alert(evt.clientY);
于 2013-03-26T07:47:02.627 に答える