問題タブ [popstate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
8610 参照

jquery - Javascript の履歴状態が正しくありません

を使用して、現在選択されているタブのインデックスを作成しようとしています

プログラムでjquery uiタブを切り替えるjqueryのpopstateイベントへのハンドラがあります。

これは正常に機能し、ブラウザと戻るボタンと進むボタンを使用してタブを切り替えることができます。2 層のタブでも機能します。

しかし、場合によっては、追加の状態をスタックにプッシュしたいことがあります。だから私は次のことをします:

履歴にプッシュする前後のコンテンツは見栄えがします。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の両方で機能するため、コードに問題があるようです。

0 投票する
2 に答える
19261 参照

javascript - バインディングpopstateイベントが機能しない

このコードをブラウザのコンソールに入力しようとしました。

次に、戻るボタンをクリックします。アラートは表示されていません。私は何か間違ったことをしていますか?または、popstateイベントをコンソールからページにバインドすることは許可されていませんか?

Chrome24とFirefox18の使用

0 投票する
2 に答える
459 参照

javascript - html では、window.onpopstate はロード時と戻る矢印の両方で起動します - どうやって知るのですか?

私のページには、リスナーがいますwindow.onpopstate

ユーザーの戻る矢印をトラップして、独自のルーチンを実行したい

ただしwindow.onpopstate、1) ページが最初に読み込まれたとき、2) 再読み込みされたとき、および 3) ユーザーが戻る矢印を押したときに起動します

状態空間フラグを作成して確認できましたしかし、何が起こっているのかをイベント自体から判断する方がより自然です。

イベントがロードまたは戻るボタンから発生したかどうかを判断する本質的な方法はありますか? 2 つのイベントを調べると、ほとんど同じように見えます。

0 投票する
2 に答える
1981 参照

iframe - popstate/statechange イベントをトリガーするには、戻るボタンを 2 回クリックする必要があります。

iframe を含むページがあります。iframe は、ユーザーの入力 (ボタンのクリックまたはメニューの選択による) を受け取り、それに応じてコンテンツを表示できます。私が必要としているのは、ユーザーが iframe を操作すると、ブラウザーが iframe パラメーターの各セットを履歴にプッシュすることです。ユーザーが [戻る] ボタンをクリックすると、iframe は以前の履歴エントリから保存されたパラメーターを使用してコンテンツをリロードします。以下に示すように、リロードを行うコードがあります。

奇妙なことに、iframe で複数の設定を行い (したがって、複数の状態エントリが履歴に追加されます)、後ろをクリックすると、次のように動作します。

履歴に状態 4、3、2 があり、現在は状態 5 にあるとします。

  1. 最初のクリックで状態 4 に復元されます (「----state changed----」ログ メッセージが出力されます)。
  2. 2 回目のクリックで、iframe がデフォルトのコンテンツでリロードされます。「----state changed----」は出力されません。リロード コードは呼び出されません。
  3. 3 回目のクリックで状態 3 に復元
  4. 4 回目のクリックは 2 回目のクリックのようなものです
  5. 5回目のクリックで状態2に復元

したがって、状態を正常に復元する各クリックの後、popstate イベントをトリガーし (同じ結果で statechanged イベントも試しました)、別の以前の状態に復元するには 2 回のクリックが必要です。

ここで何が起こっているか知っている人はいますか?前もって感謝します。

0 投票する
0 に答える
786 参照

javascript - popstate から何かを取得するにはどうすればよいですか?

プッシュ/ポップ状態に関する Mozilla ドキュメントをすべて読みました。それを機能させるために必要なパズルのピースが欠けていると思います。pushstate は期待どおりにアドレス バーを更新しています。

しかし、どうすればページを元に戻すことができますか? 基本的に私はそうのように pushState を使用します

formattedTitleしかし、関数を実行できるように popstate から戻りたいと思いgetDetail(formattedTitle)ます。しかし、これは機能していません。