関数でユーザーがアクセスしようとしているページのURLを取得できないか、まったく取得できませんunload
(場合によっては、プライバシーのリスクがあります)。また、URLのフラグメント識別子(ハッシュ)はキャッシュを妨げません。変更してもページはリロードされません。?query
キャッシュバスターの場合は、URLの一部に書き込む必要があります。これは、たとえば、location.search= '?'+Math.random();
。
しかし、それはどれも良い考えではありません。ブラウザがページをリロードまたはページに戻る/進むときにフォームの以前の値を「記憶」する動作は望ましくないため、フォームフィールドをまったく使用しないことが最善の策です。スクリプトにDOMの別の部分にデータを書き出させます。
<span id="counter" class="remaining-300"></span>
スクリプトのspan要素からそれを読み取るか.className
、変数をJSに直接書き込みます。
<span id="counter"></span>
<script type="text/javascript">
var remaining= 300;
</script>
これにより、ページが読み込まれるたびにカウントダウンが300秒にリセットされます。
また、多くの最新のブラウザでは、ユーザーが移動したときに元のページ(すべてのコンテンツとスクリプトの状態を含む)を保持し、「戻る」を押したときにリロードせずに元に戻す「bfcache」について考える必要があるかもしれません。 。
現在、カウントダウンは引き続きチェックされますが、ページが非表示になっている間はチェックされないため、離れたときと同じくらいの時間が残ります。それが望ましくない場合は、ティッカー間隔とは関係なく期限タイムアウトを設定して、常に予想されるリロード時間に起動するようにしてください。または、最後の手段として、一般的に回避するために、onunload
何もしない関数であっても、何かに設定することで意図的にbfcacheを壊すことができます。