2010-11-11 26 views

回答

0

使用window.onunloadwindow.onbeforeunload javascript回調來保密/保存狀態。 onbeforeunload example

+0

遺憾的是我們並沒有真正改變頁面,只是顯示在同一頁面的不同部分。 – 2010-11-11 21:18:29

0

我還沒有實際執行此行爲,但這裏是我的計劃,也許它會爲你工作。

1)每當您收到一個onHistoryChanged事件並決定允許它時,將當前的historyToken保存在某個實例變量中。

2)跟蹤應該阻止導航的頁面上的活動。使用可跟蹤多個活動的數據結構,如多個文件上傳,多個編輯等。

3)當您收到一個新的onHistoryChanged事件時,如果#2的數據結構指示導航不安全,請避免更改頁面並恢復您在#1中保存的historyToken。我假設你可以做到這一點無論是:

一)致電History.newItem(oldHistoryToken,false)還是

B)調用History.newItem(oldHistoryToken,真),並保持標誌可以強制接下來的歷史變化就被忽略了。

再次,我沒有實際執行這個,所以讓我知道它是如何工作的。

如果您有允許用戶離開應用程序的鏈接,並且您想要阻止該應用程序,則還需要添加onbeforeunload。

+0

我已經實現了某種東西。我原本以爲最終會在歷史堆棧中出現重複的標記,但顯然歷史代碼足夠聰明而不會這樣做。 – 2010-11-12 19:22:26

+0

我實際上做的是我記錄當前的URL(實際上只是歷史令牌),當我做一個History.newItem,我有一個包裝類來做到這一點。當用戶取消導航事件時,我只需將最新保存的令牌添加到History.newItem(使用false parm)即可。所以問題解決了,謝謝大家。 – 2010-11-12 19:26:03

0

查看gwt-platform框架中的PlaceManagerImpl類。尤其是onValueChange()方法和處理onLeaveQuestion字段的方法。

希望有所幫助。

+0

基本上這就是我最終做的。感謝鏈接到源代碼瀏覽器,我總是忘記它是可用的。 – 2010-11-12 19:30:02

+0

很高興我能幫到你。 – z00bs 2010-11-13 07:41:03

1

在GWT 2.1中,您將獲得活動和地點。並且活動有一個maystop方法,如果我理解正確,這正是您想要的。

0

this問題報告中,t.broyer在他的comment中解釋說,此行爲是在設計Places框架期間計劃的。最重要的部分是:

mayStop是一個錯誤,或者它應該只在卸載應用程序時才被調用,而不是在應用程序內的內部導航。

所以可能最好還是不要用它在所有...

相關問題