9

次のコードは、'1' のアラートを発生させるはずですが、代わりに何もしません。

window.onpopstate = function(event) { alert(event.state.a) }
history.pushState({a: 1})
history.back()

フィドル: http://jsfiddle.net/WNurW/2/

何か案は?

4

3 に答える 3

13

pushstate コマンドは、現在どのページにいるかを通知するため、コードは popstate を引き起こしません。

window.onpopstate = function(event) { alert(event.state.a) }
history.pushState({a: 1});
history.pushState({a: 2});
history.back()

上記のコードは機能します。
フィドルはこちら: http://jsfiddle.net/WNurW/8/

HTML5 の歴史

上の図でわかるように:
(1)ここでページまたはフィドルを入力した後、履歴チェーンに新しいリンクを追加する pushState を実行します。

(2)状態をプッシュすると、履歴にもう 1 回戻るクリックが追加されますが、「履歴」の現在の場所も新しい状態に移動します。したがって、戻っても、取得していると思われる履歴状態は得られず、前の状態が得られます。

(3)手順 (2) で作成した状態に戻るには、「新しい」ページに移動するか、別の履歴状態をプッシュする必要があります。

于 2013-07-23T07:38:38.367 に答える