を使用して、現在選択されているタブのインデックスを作成しようとしています
history.pushState({tabSelected: 1}, null, "");
プログラムでjquery uiタブを切り替えるjqueryのpopstateイベントへのハンドラがあります。
$(window).bind("popstate", function(event) {
var state = event.originalEvent.state;
...
}
これは正常に機能し、ブラウザと戻るボタンと進むボタンを使用してタブを切り替えることができます。2 層のタブでも機能します。
しかし、場合によっては、追加の状態をスタックにプッシュしたいことがあります。だから私は次のことをします:
var content = { targetId : id,
targetContent : $("#myDivId").html()
};
$.extend(content, {tabSelected: currentTab});
history.pushState(content, null, "");
履歴にプッシュする前後のコンテンツは見栄えがします。console.log(history.state); で確認。また、Chromeコンソールでチェックしてみました。
しかし、私の popstate ハンドラーでは、オブジェクト event.originalEvent.state の targetId、tabSelected 属性が表示されません。オブジェクトの tabSelected の正しい値が表示されていますが、何らかの理由でトリミングされた状態になっています。
Chrome と Firefox の両方でチェックインしました。正しいコンテンツを取得できません。何が間違っている可能性がありますか?前もって感謝します。
アップデート
また、すべてのプッシュステートでグローバル変数をインクリメントして、それを状態に追加しようとしました。私が言及している特定のケースでは、グローバル変数の値が 49 ではなく 48 になり、最後から 2 つ後のイベントを取得していることがわかります。popstate ハンドラーがその間に呼び出されていません。何が起こっているのかわかりません。
別のアップデート
history.pushState(content, null, "") を 2 回呼び出すと、正常に動作します。(ある場所でのみ、他の場所ではまだ一度呼び出しています)。何らかの理由で、ブラウザが最後から 2 つ目の状態を返しているようです。この回避策はクロムとFirefoxの両方で機能するため、コードに問題があるようです。