即使单击确认框中的“取消”按钮,窗口也会关闭

时间:2013-04-23 19:35:41

标签: javascript

在我的网站上,我在新窗口进行了一次考试。我希望如果用户关闭此窗口,如果他在确认时按“确定”,他将被重定向到其他页面。但如果按“取消”,他应该留在那里。我正在使用的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();
});

此处点击“确定”按钮,“Result.aspx”窗口成功打开,但问题是如果用户在确认框中单击“取消”,则窗口也将关闭。 请告诉我我哪里出错或者替代方案。 任何形式的任何帮助将不胜感激。 在此先感谢!!

1 个答案:

答案 0 :(得分:1)

您实际上无法阻止用户离开您的网页。最后一个对话框(由浏览器控制),询问他们是想留在这个页面还是离开,取决于他们。

您对confirm()的使用只是为用户提供了一个对话框,您可以从中选择,但对剩下的页面没有影响。如果您从window.onbeforeunload返回一个值,它会提示用户我提到的最后一个对话框,但您无法捕捉他们的选择,也无法控制它。

实际上阻止用户离开您的网页,您无能为力。