2009-12-28 37 views
0

當用戶離開我的網站的一個頁面,應該有一個警告消息,這使用戶可以在網頁上停留的選項:詢問用戶是否一定會離開網站(XHTML/JavaScript的)

「你確定要關閉這個頁面嗎?」

如果下一頁是內頁或外頁,則無關緊要。

我認爲這可以用onUnload事件處理程序完成,不是嗎?然後

<body onunload="confirmClose()"> 

的confirmClose()函數必須顯示有兩個按鈕的消息框,以便用戶可以與「真的離開」或「留」選擇。

function confirmClose() { 
    return confirm('Really leave this page?') 
} 

但是這個函數不能停止卸載,對不對?

你有解決我的問題的方法嗎?提前致謝!

+6

我有一個解決問題的方法:不要求用戶確認離開您的網站。這只是煩人的。 – 2009-12-28 17:50:31

+6

對此有合法用途,例如,當用戶輸入在離開頁面時會丟失。 – 2009-12-28 17:51:15

+0

我必須同意你們兩個。雖然這真的很煩人,但可能很有用。我想在適當的情況下使用它,防止用戶丟失數據。 – caw 2009-12-28 21:24:00

回答

4

您可以添加一個onbeforeunload事件。請注意,它只能只有返回一個文本字符串以包含在瀏覽器在調用該事件時將顯示的對話框中。除此之外,您無法調整對話框,也不能像您正在嘗試的那樣觸發自己的對話框confirm

我會注意到,這是非常,非常惱人的行爲,除了在一些特定的情況。除非您使用此功能挽救我的重大數據丟失,否則請不要這樣做。

+0

非常感謝!所有答案都很好,很有幫助 - 但我必須選擇一個作爲最好的答案。 ;)所以我選擇你的。 – caw 2009-12-28 21:25:39

1

瀏覽器負責顯示確認窗口。 您需要返回字符串與您要問的消息。另外,您可能希望使用onbeforeunload以實現跨瀏覽器兼容性。

5

您只能提供該文本。瀏覽器處理對話框(安全原因)。以下是您可以使用的一些代碼:

window.onbeforeunload = function (e) { 
    var e = e || window.event; 
    var msg = 'Are you sure you want to leave?'; 

    // For IE and Firefox 
    if (e) { 
     e.returnValue = msg; 
    } 

    // For Safari/chrome 
    return msg; 
} 

不過,在不同的瀏覽器上試試這個。你會注意到這個消息應該根據不同的瀏覽器的對話文字而有所不同。

下面是我用:

if (IsChrome) { 
    return 'You were in the middle of editing. You will lose your changes if you leave this page'; 
} else { 
    return 'You were in the middle of editing. Press OK to leave this page (you will lose your changes).'; 
} 
相關問題