(102) JavaScriptでページを強制リロード

投稿者: | 2021年3月4日

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


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)