1. ホーム
  2. javascript

[解決済み] window.history.pushStateでブラウザを更新する

2022-03-08 16:39:31

質問

私はいくつかのjavascriptのコードで作業しています。 window.History.pushState を読み込んで、新しい HTML ページを使用する代わりに href タグを使用します。私のコード(これは 正常に動作している ) は次のようになります。

window.History.pushState({urlPath:'/page1'},"",'/page1')

不思議なことに、この 失敗 ブラウザを再読み込みします。

window.History.pushState({urlPath:'/page2.php'},"",'/page2.php')

しかし、この 動作 コンテンツは更新されるが、ブラウザは更新されない! (URLは相対的ではなく絶対的であることに注意してください)

window.History.pushState({urlPath:'www.domain.com/page2.php'},"",'www.domain.com/page2.php')

ドキュメント に対して window.History.pushState によると、3つ目のパラメータ URL は絶対パスか相対パスのどちらかであるとのことです。

URL - 新しい履歴エントリーのURLは、このパラメータで指定します。注意 を呼び出した後、ブラウザはこのURLを読み込もうとしないこと。 pushState() は、後で URL を読み込もうとするかもしれません。 ユーザがブラウザを再起動した後 新しいURLは 相対パスであれば,現在のURLからの相対パスで解決される。 新しいURLは、現在のURLと同じオリジンでなければなりません。 は例外を発生させる。 このパラメータはオプションです。 指定されない場合は、ドキュメントの現在の URL が設定されます。

絶対URLは動作するようですが、相対URLは動作しないようです。なぜこのようなことが起こるのでしょうか?

解決方法は?

簡単に言うと history.pushState (ただし History.pushState という例外が発生するため window の部分はオプションです)は、決してあなたが提案するようなことはしません。

もしページが更新されるのであれば、それはあなたが行っている他のことが原因です(例えば、アドレスバーが変更された場合に新しい場所に移動するコードを実行している可能性があります)。

history.pushState({urlPath:'/page2.php'},"",'/page2.php') は、私や私の同僚のために、Chrome、IE、Firefoxの最新バージョンで想定されるように正確に動作します。

実際には、関数に好きなものを入れることができます。 history.pushState({}, '', 'So long and thanks for all the fish.not a real file') .

さらにコードを投稿する場合(特に近くのコードに注意 history.pushState および任意の場所に document.location が使用されている場合、この問題がどこから発生しているのか、私たちが喜んでお手伝いさせていただきます。

もっとコードを投稿してくれたら、この回答を更新します(あなたの質問をお気に入りに入れています) :).