2012-11-13 42 views
1

我在beforeUnload事件上有一個鉤子。如果我嘗試點擊鏈接,重新加載或關閉標籤或導航器,應用程序在離開前請求確認。這是理想的行爲。爲什麼OnBeforeUnload不會攔截我的GWT應用程序中的後退按鈕?

但是,如果點擊後面的按鈕或輸入外的退格,不確認。

在HTML的開頭:

window.onbeforeunload = function() { 
if (confirmEnabled) 
    return ""; 
} 

我用的是GWT PlaceHistoryMapper。

我錯過了什麼?我忘了看什麼?

謝謝!

+0

而_back button_帶你到哪裏?在您的應用內或外部? –

+0

之內。它的行爲正常,只是沒有確認彈出窗口。 –

回答

2

只要你留在你的應用程序中,因爲它是一個單頁的應用程序,它並沒有定義卸載,所以沒有beforeunload事件。

當使用地方,相當於是由PlaceControllerEventBus派出PlaceChangeRequestEvent。這個事件是順便發出beforeunload順便說一句,並且是mayStop()處理的基礎活動

外GWT,在JS世界,等同將hashchange和/或popstate,這取決於你PlaceHistoryHandler.Historian實現(默認的使用History.newItem(),所以這將是hashchange)。

+0

對於我的應用程序中的錨點,我添加了一個JS位來攔截點擊。這就是我錯過的。現在我想處理PlaceChangeRequestEvent,但我不知道如何停止或繼續,一旦我要求確認 –

+0

通過「請求確認」,你的意思是'PlaceChangeRequestEvent'上的'setMessage()'或滾動你自己的事件處理器?使用前者,確認並停止/繼續免費。 –

+0

感謝!這樣可行 :) –

相關問題