1,899 views
この記事は最終更新から 1306日 が経過しています。
1. やりたいこと
WEBブラウザで表示中のページを JavaScriptで強制リロードさせたい。
FireFoxを愛用している自分は、以下のように書いて満足していた。
location.reload(true);
ところがこれだと…
Google Chromeでリロードされない!
のであった。
なぜならば…
location.reload(true) で強制を指示する trueは、
非公式な仕様
なのだそうだ。
でも…
Google Chromeでも JavaScriptでページを強制リロードさせたい!
2. やってみる
対策1 : URLにパラメータを付ける。
CSSや JavaScriptファイルの更新時などによくやっている。
function execReloadPage(){ var date = new Date(); window.location = get_baseUrl() + '?v=' + date.getTime(); }
率直に言ってダサい。
しかも…
後でパラメータなしの URLでアクセスすると、古いページが表示されてしまう。
よって…
これは実用に耐えられないと判断した。
対策2 : Ajaxでページを強制リロードした後に遷移する。
Ajaxを使い、no cache指定で一度裏でページを強制リロードする。
ここでキャッシュがクリアされているので、その後は普通にアクセスすればよい。
$.ajax({ type: "post", url: window.location.href, async: false, cache : false, }).done(function () { window.location.reload(true); });
こちらを採用しよう!
3. 参考情報
https://developer.mozilla.org/ja/docs/Web/API/Location/reload