2013-04-23 69 views
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(); 
}); 

這裏就點擊「確定」按鈕的「Result.aspx」窗口打開成功,但這裏的問題是,如果用戶點擊確認框,然後也窗口被關閉,得到「取消」。 請告訴我我該錯在哪裏或者有其他選擇。 任何形式的幫助將不勝感激。 在此先感謝!

+1

您必須從'window.onbeforeunload'返回一個字符串,它將從您無法控制的瀏覽器中打開一個確認框。如果用戶按下取消,導航將被中斷。欲瞭解更多信息,請參閱[這個問題](http://stackoverflow.com/questions/12570800/onbeforeunload-and-onunload-getting-one-to-work-after-the-other/12570865#12570865) – jbabey 2013-04-23 19:37:45

回答

1

您實際上無法阻止用戶離開您的頁面。最後的對話框(由瀏覽器控制)詢問他們是否想留在這個頁面或離開,取決於他們。

您使用confirm()只是爲用戶提供一個對話框,您可以從中選擇對話框,但對留下的頁面沒有任何影響。如果您從window.onbeforeunload返回一個值,它會提示用戶使用我提到的最終對話框,但是您無法捕獲它們的選擇,也無法控制它。

沒有什麼可以做,以實際阻止用戶離開你的頁面。

+0

Ohhk。現在我知道我的錯誤是什麼。 我只是想在測試過程中如果用戶在確認時關閉測試窗口,結果窗口應該打開;否則他會按照正常的網站流程進行操作。那麼請你指導我如何實現這一目標? – user2312114 2013-04-24 08:02:50

相關問題