2013-05-06 61 views
0

這個話題幾乎都是這麼說的。如果用戶決定留在頁面上,我想顯示另一個div。如果他們拒絕頁面導航,是否有我可以聽的活動?如果用戶拒絕在onbeforeunload事件中留下頁面,事件之後是否有事件被觸發?

我在這裏找到這個,Detecting whether user stayed after prompting onBeforeUnload 但我無法得到這個工作。我沒有「擁有」顯示的按鈕,所以我無法監控點擊,或者我可以嗎?

+0

細節會有所幫助。你怎麼不「擁有」你正在使用的HTML?您可以將事件偵聽器附加到頁面上的任何元素(如果它存在)。您也可以委託監聽外部容器,以獲取稍後換出或添加的元素(請參閱事件代理或事件冒泡)。共享相同域的iframe也可以被訪問。 – 2013-05-06 23:04:27

+1

可能重複一個很好的答案:[方法來知道用戶點擊Cancel on onbeforeunload對話框?](http://stackoverflow.com/questions/4650692/way-to-know-if-user-clicked-cancel- on-a-javascript-onbeforeunload-dialog?rq = 1) – metadings 2013-05-06 23:55:02

+0

讓我澄清一下,onbeforeunload顯示一個帶有兩個按鈕的對話框。一個允許用戶繼續到另一個站點,另一個允許用戶保持在當前頁面上。由於瀏覽器顯示該對話框,因此我沒有對按鈕的引用,因此我無法知道哪個按鈕被點擊。 – Lazloman 2013-05-07 13:41:56

回答

2

無法判斷確定按鈕或取消按鈕是否被點擊,正如您所說的,您並不「擁有」它。

有人說,有一個技巧,理論上應該工作。如果用戶單擊取消,那麼onunload事件將永遠不會執行,並且所有內容都將保持原樣執行彈出窗口的狀態。但是,如果單擊確定按鈕,則會執行onunload事件。所以,理論是:如果執行onunload事件,您可以確定用戶是否單擊了OK。問題在於,onunload事件沒有太多可以做,因爲在那個時候,它是不可阻擋的。

因此,對於您的問題的確定答案:不可以。如果用戶單擊取消,onbeforeunload事件後觸發的典型onunload事件將不會被觸發。