2011-06-02 50 views
1

夥計們我試圖在onbeforeunload事件上調用這個確認函數,但它沒有被調用。我在這裏錯過了什麼?
我打電話這個身體標記內:<body onbeforeunload="confirmation();">
我也試過:<body onbeforeunload="return confirmation();">Javascript onbeforeunload函數

代碼:

function confirmation(){ 
    var answer = confirm('You have unsaved changes!!'); 
    if(answer == true) 
    { 
    alert('Bye Bye!!!'); 
    } 
    else{ 
     alert('You are staying'); 
    return false; 
    } 
    } 
+0

能否請您澄清或者您的示例代碼或您的標題,以反映您要捕捉哪些事件? – 2011-06-02 18:12:01

+1

onbeforeunload在哪裏? :) – TweeZz 2011-06-02 18:12:01

+1

這不是「beforeunload」處理程序的工作方式。 [閱讀此](https://developer.mozilla.org/en/DOM/window.onbeforeunload)。就像現在一樣,無論您對「confirm()」調用的回答如何,該頁面都將被重新加載。 – Pointy 2011-06-02 18:14:32

回答

5

這不是遠程如何onbeforeunload的作品,並且代碼包含語法錯誤。

window.onbeforeunload = function (e) 
{ 
    var e = e || window.event, 
     message = 'You have unsaved changes!!'; 

    // For IE and Firefox prior to version 4 
    if (e) 
    { 
     e.returnValue = message; 
    } 

    return message; 
} 
+0

並注意返回的字符串可能會或可能不會顯示給用戶。 (在較新的瀏覽器中不是。) – Pointy 2011-06-02 18:17:54

+0

真的嗎?哪些瀏覽器? Chrome 11肯定會向用戶顯示該字符串。 – 2011-06-02 18:19:50

+0

Firefox 4不會顯示字符串,我懷疑這會變得更常見。 – Pointy 2011-06-02 18:21:34

3

SOOOO .. 你試圖詢問用戶確認時,他提出,如果他離開頁面不會被保存在您的網頁上進行更改。那是對的嗎?

如果是這樣,那麼似乎是可能的。在SO上嘗試以下內容。開始寫這個問題的答案,然後嘗試關閉瀏覽器窗口。

我在鉻12,FF 4.0.1和IE 9.
測試的所有3級的瀏覽器顯示一個彈出窗口。看起來他們都包含一個自定義文本。 Chrome顯示最乾淨的消息,意味着只有自定義消息和2個按鈕的彈出窗口。
在所有3個瀏覽器試圖關閉瀏覽器的任何正常的方式觸發一個彈出窗口,允許用戶選擇他是否不喜歡留在頁面上,並完成他開始。如果他確實想離開,他可以。 (殺死瀏覽器進程或關閉計算機可能不會做你想要的東西:))。

Internet Explorer中:
enter image description here

火狐:
enter image description here

鉻:
enter image description here

我會嘗試掛鉤返回一個字符串到窗口函數的建議。 onbeforeunload事件。嘗試this

<script> 
window.onbeforeunload = function (evt) { 
    var message = 'You have started writing or editing a post.'; 
    if (typeof evt == 'undefined') { 
    evt = window.event; 
    } 
    if (evt) { 
    evt.returnValue = message; 
    } 
    return message; 
} 
</script>