HTML5履歴スペックは風変わりです。
history.pushState()
popstate
イベントを送出したり、それ自体で新しいページをロードしたりしません。国家を歴史に押し込むことだけが意図されていた。これは、単一ページアプリケーションの「元に戻す」機能です。popstate
イベントを手動でディスパッチするか、を使用history.go()
して新しい状態に移動する必要があります。アイデアは、ルーターがpopstate
イベントをリッスンしてナビゲーションを実行できるというものです。
注意すべき点:
history.pushState()
イベントをhistory.replaceState()
ディスパッチしないでくださいpopstate
。
history.back()
、history.forward()
、ブラウザの[戻る]ボタンや[進む]ボタンとは、派遣行うpopstate
イベントを。
history.go()
そして、history.go(0)
フルページのリロードを行うと、送出されませんpopstate
イベントを。
history.go(-1)
(1ページ戻る)およびhistory.go(1)
(1ページ進む)ディスパッチpopstate
イベントを実行します。
このような履歴APIを使用して、新しい状態をプッシュし、popstateイベントを送出できます。
history.pushState({message:'New State!'}, 'New Title', '/link');
window.dispatchEvent(new PopStateEvent('popstate', {
bubbles: false,
cancelable: false,
state: history.state
}));
次にpopstate
、ルーターでイベントをリッスンします。