ボタンを使用せずにすべてのコードが読み込まれた後、ページを再読み込みしたい。
私が使用した:location.reload();
問題は、それが私のページを常に繰り返しリロードすることです。
ボタンを使用せずにすべてのコードが読み込まれた後、ページを再読み込みしたい。
私が使用した:location.reload();
問題は、それが私のページを常に繰り返しリロードすることです。
ページがリロードwindow.reload()
されるたびにヒットします。このようなことをします:
if(window.location.href.indexOf('?reloaded') === -1) window.location.href = window.location.href + "?reloaded=true";
これは、ページが他のURLパラメータを使用していないことを前提としています。
編集
Matt Ballが指摘したように、localStorageまたはcookieの使用は単一のタブまたはウィンドウに限定されませんが、Jackson Sandlandがコメントで指摘したように、上記のソリューションはブラウザーの履歴を変更します。いくつか掘り下げた後、私は別の、確かに「ハッキー」であるが一見効果的な解決策を思いつきましたwindow.name
:URLのフラグの代わりに使用する:
if(window.name !== "refreshed") {
window.name = "refreshed";
window.location.refresh();
}
これをテストしたい場合は、以下をHTMLファイルに貼り付けて、ブラウザにロードしてください。
<script>
window.name = prompt("Window name", window.name);
</script>
新しい名前を入力してから、ページを更新してください。更新すると、新しい名前が表示されます。同様に、同じファイルで2番目のタブを開くと、そのタブの名前を他のタブとは独立して設定できます。
あなたの最善の策は、一度リロードされたことをどこかにフラグを立てることです。マットが言ったようにCookieまたはlocalStorageを使用すると、タブごとに必要な場合はlocation.hashを変更できます
リロードする理由を理解するのに役立つかもしれません。別の方法があるかもしれません。
更新するかどうかを示す、ページのJavaScriptの外部にある種の状態を保存する必要があります。1つの方法はlocalStorage
、またはCookieを使用することですが、どちらもタブごとまたはウィンドウごとに機能しません。