iframe を含むページがあります。iframe は、ユーザーの入力 (ボタンのクリックまたはメニューの選択による) を受け取り、それに応じてコンテンツを表示できます。私が必要としているのは、ユーザーが iframe を操作すると、ブラウザーが iframe パラメーターの各セットを履歴にプッシュすることです。ユーザーが [戻る] ボタンをクリックすると、iframe は以前の履歴エントリから保存されたパラメーターを使用してコンテンツをリロードします。以下に示すように、リロードを行うコードがあります。
奇妙なことに、iframe で複数の設定を行い (したがって、複数の状態エントリが履歴に追加されます)、後ろをクリックすると、次のように動作します。
履歴に状態 4、3、2 があり、現在は状態 5 にあるとします。
- 最初のクリックで状態 4 に復元されます (「----state changed----」ログ メッセージが出力されます)。
- 2 回目のクリックで、iframe がデフォルトのコンテンツでリロードされます。「----state changed----」は出力されません。リロード コードは呼び出されません。
- 3 回目のクリックで状態 3 に復元
- 4 回目のクリックは 2 回目のクリックのようなものです
- 5回目のクリックで状態2に復元
したがって、状態を正常に復元する各クリックの後、popstate イベントをトリガーし (同じ結果で statechanged イベントも試しました)、別の以前の状態に復元するには 2 回のクリックが必要です。
ここで何が起こっているか知っている人はいますか?前もって感謝します。
History.Adapter.bind(window, "popstate",
function (event) {
console.log("----state changed------", History.getState());
console.log("----state data------",History.getState().data.state);
//code to do reload an iframe to its proper state
});