2012-07-28 37 views
0

我有一個場景,如果用戶嘗試關閉當前瀏覽器窗口,則應顯示一個確認框。如果他確認關閉窗口,那麼此窗口應該關閉並用不同的URL打開新窗口。如果用戶確認關閉當前窗口,請在當前窗口關閉時打開一個新的瀏覽器窗口

我試過使用下面的代碼,我可以顯示確認框,但我無法弄清楚如何在用戶確認關閉當前窗口時打開新窗口。

var preventUnloadPrompt;    
$('a').live('click', function() { preventUnloadPrompt = true; }); 
$('form').live('submit', function() { preventUnloadPrompt = true; }); 
$(window).bind("beforeunload", function() { 
    if (preventUnloadPrompt) 
    { return; } 
    else { 
     return confirm("quit??");    
    } 
}); 

任何類型的幫助表示讚賞。 謝謝。

+0

這是不可能 – Esailija 2012-07-28 15:52:53

+0

理論上應該可以使用'window.open',但這不是一個好主意,因爲大多數瀏覽器可能會阻止在'unload'事件中調用'window.open'。你需要做什麼?當然,如果用戶試圖關閉標籤,那麼他們想要離開該網站,而不是打開一個新的標籤......? – ClarkeyBoy 2012-07-28 15:54:21

+0

實際上有一組問題被逐個問到用戶。如果用戶關閉了此窗口,我想在某個不同的頁面上執行代碼,以此來標記此用戶嘗試了一組問題,從而阻止他再次嘗試這個問題。通常情況下,這發生在用戶完成所有問題時。 – 2012-07-28 16:00:31

回答

1

當窗口關閉,應有盡有,絕對與窗口是否可見或不相關的一切... javascript代碼,屏幕上的東西,等未決消失,並且包含非常的腳本,在中間執行 - poof - 去了nada,基本上取消,中止,停止,停止任何正在運行的腳本。

時間排序要求,除了關閉一個窗口,所有其他用戶啓動的操作首先完成。

例如:

javascript: 
void(window.open("data:text/html, 
<html> 
<a href=\"javascript:window.open('about:blank');self.close();void(0);\">open & close</a> this link does both<br/> 
<a href=\"javascript:self.close();window.open('about:blank');void(0);\">close & open</a> this does close but open fails 
</html> 
")) 

的鏈路具有與if(confirm("quit??")){ ... }

與測試進行預處理:

window.navigator.userAgent = 
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0 

書籤:
Open a new browser window on close of current window if user confirms to close current window

-1
var answer = confirm("quit??"); 
if (answer){ 
    window.open("http://www.google.com/"); 
} 
else{ 
// do something else 
} 
+0

讓我知道它是否有效 – 2012-07-28 16:00:25

+0

「答案」應該是你推薦的作爲工作解決方案的東西。對於其他所有內容,都有一個「評論」部分,您可以在其中提出更多問題或試用 – YePhIcK 2012-07-28 16:05:19

+0

否。無論如何感謝您的答覆。 我認爲確認不適用於beforeunload。我注意到, 返回確認(「退出??」); 是不正確的。它不是導致確認框的那個。 如果我寫回歸「退出」確認框顯示Quit?在第一行,然後它有字符串說你確定要離開這個頁面?和兩個按鈕保持在此頁面上並離開此頁面。 – 2012-07-28 16:18:32

相關問題