2012-06-27 57 views
1

我也明白,它不可能與一個自定義更換beforeunload對話框,然後,如果我們需要設置一個自定義的信息給用戶,我們將不得不在我們beforeunload處理程序返回的字符串:如何在beforeunload顯示它自己之前顯示模態對話框?

{Custom message here set by returning a string in our beforeunload handler} 
Are you sure you want to leave this page? 
[Leave this page] [Stay on this page] 

那麼,如何在瀏覽器顯示實際的beforeunload對話框之前顯示自定義模式對話框(可能是jQuery)?

我當前的代碼使用的fancybox:

window.onbeforeunload = function() { 
    $.fancybox({ 'type':'iframe', 'href':'/PopupOnExit.php' }); 
    return "Special offer! Stay on this page for more details."; 
}; 

然而,這首先顯示瀏覽器的對話框,只有點擊或者「留」或「離開」按鈕,並在瀏覽器中顯示我的模態對話框後。

有沒有什麼辦法讓我的模態對話框顯示在瀏覽器的對話框之前?

+0

哪個瀏覽器對話框? – Blaster

+0

我用我指的瀏覽器對話框來編輯問題 – Obay

回答

2

只有腳本結束執行時,DOM修改纔會生效。在這種情況下,出於明顯的安全原因,本機對話框會首先被觸發。

注意,由於此非特定功能引入的許多安全問題(見the MDN doc),這將可能被刪除(最快在我看來是最好的),老原因,將它(保存數據)是過時在阿賈克斯時代。

0

卸載和onBeforeUnload都不是跨瀏覽器事件。小心。 在Opera中,有時在Chrome中不起作用。

相關問題