1

私のウェブサイトでは、新しいウィンドウで試験を実施しています。ユーザーがこのウィンドウを閉じると、確認時に「OK」を押すと、他のページにリダイレクトされるようにしたいと考えています。しかし、「キャンセル」を押すと、彼はそこにとどまるはずです。私が使用しているjavascriptは以下です。

/**
* This javascript file checks for the brower/browser tab action.
* It is based on the file menstioned by Daniel Melo.
* Refer: http://stackoverflow.com/questions/1921941/close-kill-the-session-when-the-browser-or-tab-is-closed
*/

var validNavigation = false;

function endSession() {

 $choice = confirm("You will exit your CSA test. Are you sure you want to close the window?");

 if ($choice)
     window.open('Result.aspx', '_blank', 'toolbar=0, scrollbars=1');
}

function wireUpEvents() {

window.onbeforeunload = function () {
    if (!validNavigation) {
        endSession();
    }
}

// Attach the event keypress to exclude the F5 refresh
$(document).bind('keypress', function (e) {
    if (e.keyCode == 116) {
        validNavigation = true;
    }
});

// Attach the event click for all links in the page
$("a").bind("click", function () {
    validNavigation = true;
});

// Attach the event submit for all forms in the page
$("form").bind("submit", function () {
    validNavigation = true;
});

// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function () {
    validNavigation = true;
});

}

$(document).ready(function () {
wireUpEvents();
});

ここで「OK」ボタンをクリックすると、「Result.aspx」ウィンドウが正常に開きますが、ここでの問題は、ユーザーが確認ボックスで「キャンセル」をクリックすると、ウィンドウも閉じられることです。どこが間違っているのか、またはこれに代わるものを教えてください。あらゆる種類のヘルプをいただければ幸いです。前もって感謝します!!

4

1 に答える 1

1

ユーザーがページを離れるのを実際に止めることはできません。このページにとどまるか離脱するかを尋ねる最後のダイアログ (ブラウザーによって制御される) は、ユーザー次第です。

を使用するとconfirm()、ユーザーにダイアログを提供するだけで、そこから選択することができますが、残っているページには影響しません。から値を返すと、window.onbeforeunload前述の最後のダイアログでユーザーにプロンプ​​トが表示されますが、ユーザーの選択をキャプチャすることも、制御することもできません。

ユーザーがページを離れるのを実際に止めるためにできることは何もありません。

于 2013-04-23T19:37:08.553 に答える