たとえば、次のコードスニペットを見てください。
window.location.href = 'mysite.htm#images';
すでにサイトにいるmysite.htm
とリロードのトリガーlocation.href
はページをリロードしませんが、URL内で指定されたアンカーにジャンプします。
本当にページをリロードするメカニズムが必要です。何か案は?
PS:私は場所の他の方法を試しましたが、どれもトリックをしません:(
[〜#〜]編集[〜#〜]
ファイルタイプhtm
でハングアップしないでください。動的なサイトにも必要です。
指定されたURLを場所に設定した後、window.location.reload(true)
を発行します。これにより、ブラウザは強制的にページをリロードします。
uRLのクエリ部分を使用して、ランダムな文字列を追加します。
// Use a timestamp to make sure the page is always reloaded
window.location.href = 'mysite.htm?r='+(+new Date())+'#images';
Alemjerusの答えは良い方向にあると感じていますが、それは新しいURLが別のページを指している場合は機能しません、少なくとも私のChrome v40。
例:新しいURLがアンカーを追加するだけの場合、正常に機能します。
var redirectToURL = '/questions/2319004/javascript-how-to-truly-reload-a-site-with-an-anchor-tag#answer-28621360';
window.location.href = redirectToURL;
window.location.reload(true);
ただし、別のページを指している場合、ユーザーはリロード後も現在のページにとどまります。 (次のコードをバッチで実行します。location.href=
およびlocation.reload
):
var redirectToURL = 'http://stackoverflow.com';
window.location.href = redirectToURL;
window.location.reload(true);
この場合、location.reload
機能します。したがって、私の回避策は、新しいURLが同じページにあるかどうかを確認することです。
var urlParser = document.createElement('a');
urlParser.href = redirectToURL;
if (urlParser.Origin + urlParser.pathname === location.Origin + location.pathname) {
window.location.reload(true);
}
ChromeおよびSafariでテスト済み、IEを試していません。主要なブラウザで動作しない場合は、どうぞお知らせください。
あなたは詐欺師になり、ランダム化されたクエリ文字列を追加して、「mysite.htm?random = 289954034#images」にリダイレクトすることができます。
しかし、これが静的ページの場合、.htm
を意味します。何のためにリロードする必要がありますか?オンロードJavascriptが2回目に発生する可能性がある場合は、アプリケーションのフローを変更する必要があるだけかもしれません。
これを試して: window.location.href = 'mysite.htm?';
編集:これは初めてのみ機能します。その後、キャッシングが再び有効になります。