簡體   English   中英

如何在不去往/開始活動的情況下更改瀏覽器歷史記錄(gwt)

[英]how to change browser history without going to place/ starting activity (gwt)

在我的應用程序中,我有一個相對復雜的活動/地方。 在活動開始時解析狀態(從歷史令牌到模型)會導致一些服務器交互。 在用戶交互中,活動僅更新模型的必要部分,因此保護一些服務器交互 - 活動/模型具有內部狀態。

有沒有辦法在沒有(重新)啟動活動的情況下反映瀏覽器歷史記錄中的狀態? History.newItem(token)也會導致活動開始)

更新克里斯的解決方案“幾乎”有效,但另一個問題上升了:在我的ui中我有一個重置按鈕(指向空標記的地方的鏈接)。 如果我點擊ui周圍令牌已更新,但現在重置按鈕不起作用。 gwt認為它在同一個地方,所以它忽略了重置點擊。 在此之前問題幾乎相同:令牌和地點沒有改變,因此重置按鈕也不起作用。 GWT記錄為“被要求返回同一個地方”

那么有沒有辦法讓gwt重新啟動活動而不管地點等價?

轉到新位置,但讓ActivityMapper返回相同的活動實例。 這樣,活動就不會重新啟動。
當地點從其他方面改變時,你必須找到更新活動的方法(例如瀏覽器歷史記錄)。 例如,請參閱GWT MVP更新Place更改的活動狀態

有一個半解決方案,雖然我不想推薦它 ,但我想在這里添加它 - 只是為了警告這個解決方案的缺點:

您可以通過調用History.newItem(token, false)將標記添加到歷史記錄而不觸發事件。

這是一個半解決方案,因為:

  • 它工作正常(只要你正確構建你的令牌)。
  • 還解決了性能問題的一部分:將令牌添加到歷史記錄時,不會重新啟動活動。
  • 但是,如果用戶在歷史記錄中前后移動,則性能問題仍然存在(因為那時,事件將再次觸發)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM