0

ボタンを使用せずにすべてのコードが読み込まれた後、ページを再読み込みしたい。

私が使用した:location.reload();

問題は、それが私のページを常に繰り返しリロードすることです。

4

3 に答える 3

7

ページがリロード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番目のタブを開くと、そのタブの名前を他のタブとは独立して設定できます。

于 2012-12-17T20:44:08.270 に答える
3

あなたの最善の策は、一度リロードされたことをどこかにフラグを立てることです。マットが言ったようにCookieまたはlocalStorageを使用すると、タブごとに必要な場合はlocation.hashを変更できます

リロードする理由を理解するのに役立つかもしれません。別の方法があるかもしれません。

于 2012-12-17T20:43:09.643 に答える
2

更新するかどうかを示す、ページのJavaScriptの外部にある種の状態を保存する必要があります。1つの方法はlocalStorage、またはCookieを使用することですが、どちらもタブごとまたはウィンドウごとに機能しません。

于 2012-12-17T20:40:45.050 に答える