質問: JS(JavaScript)であるページへの「戻る」動作を抑制したいのですが、シンプルで簡潔に実装する方法はあるでしょうか。 対象ブラウザはAndroidのWebViewです(AndroidアプリにWebViewが埋め込まれておりJSをユーザーがOFFにしたり、Blank指定で新しいページを表示することは出来ません)。 また、WebViewのイベント経由で遷移URLをログとして収集しているため、innerHTMLなどをAjaxで取得した内容で置き換えるといったWebViewのloadedイベントなど発生しない方法は検討の対象外となります。 独自に調査したところではHTML5のhistory.stateなどを使ったものがあるようですが「あるページにおいて、おしなべてどのページにも戻れなくする方法」にしかならないようです。 また、現在は仕方なくwebstorageにフラグを立てて戻ってきたらフラグ判定して条件に合う場合にのみ強制的にhistory.forwardなどを掛けているのですが、一瞬戻っていることに変わりは無いため前出のWebViewイベントが反応してしまいログに複数の履歴が残り困っています(ログを残したくない)。 やりたいこと ページAにおいて、 ページA → ページB(直前のページがB) は戻れても良いが ページA → ページZ(長髯のページがZ。Zは特別戻らせたくないページ)のようにZにだけは戻れないようにする。 という動作です。 WebStorageなどでフラグを立てて判定する他ないのでしょうか。 それとも、完結に特定のページに対する戻り動作だけを寸前で抑止する方法はありますでしょうか。
回答: WebStorageでフラグを立てて判定しておられるとのことですが、 ・ページZからAに遷移する時にフラグを立てる ・ページAで、フラグ有の時のみ、History.jsを使って履歴を書き換えて戻れなくする というのはいかがでしょうか。