私たちのアプリでは、特定の場所にいるときにデータが保存されているかどうかを確認してから、そこから移動する必要があります。したがって、ユーザーはブラウザの戻るボタンの要求を無効にできるはずです。ただし、履歴値の変更イベントを受信するまでに、URLはすでに変更されています。Historyクラスには、URLを元に戻す方法がないようです。誰かアイデアはありますか?
5 に答える
GWT 2.1 では、Activities と Places を取得します。そして、アクティビティにはmaystopメソッドがあります。これは、私があなたを正しく理解していれば、まさにあなたが望むものです。
window.onunload
またはwindow.onbeforeunload
javascriptコールバックを
使用して、状態を確認/保存します。onbeforeunloadの例
私はまだこの動作を実際に実装していませんが、これが私の計画であり、おそらくうまくいくでしょう。
1) onHistoryChanged イベントを受け取り、それを許可することを決定するたびに、現在の historyToken をインスタンス変数のどこかに保存します。
2) ナビゲーションをブロックするページ上のアクティビティを追跡します。複数のファイルのアップロード、複数の編集など、複数のアクティビティを追跡できるデータ構造を使用します。
3) 新しい onHistoryChanged イベントを受け取ったときに、#2 のデータ構造が安全にナビゲートできないことを示している場合は、ページの変更を避け、#1 で保存した historyToken を復元します。次のいずれかの方法でこれを行うことができると想定しています。
a) History.newItem(oldHistoryToken, false) の呼び出しまたは
b) History.newItem(oldHistoryToken, true) を呼び出し、次の onHistoryChanged を強制的に無視するフラグを保持します。
繰り返しますが、私は実際にこれを実装していないので、どのように機能するか教えてください。
ユーザーがアプリを離れることを許可するリンクがあり、それも防止したい場合は、onbeforeunload も追加する必要があります。
gwt-platformフレームワークのPlaceManagerImpl
クラスを見てください。特にメソッドとフィールドを扱うメソッド。onValueChange()
onLeaveQuestion
それが役立つことを願っています。