5

トランジションとして、視聴者の画面から全身をアニメーション化するページがあります。正常に動作しますが、ユーザーがブラウザの[戻る]ボタンをクリックすると、Firefoxは本文のない履歴からキャッシュされたページを表示します。

したがって、戻るボタンを使用してアクセスしたときにページをリロードするのは簡単です。

再読み込みが繰り返されないように、次のコードを使用してページを再読み込みしてみました。

<script type="text/javascript">
  window.onload=function(){
    var e=document.getElementById("refreshed");
    if(e.value=="no")e.value="yes";
    else{e.value="no";location.reload();}
  }
</script>
<input type="hidden" id="refreshed" value="no">

匿名関数が呼び出されなかったため、問題は解決しませんでした。

そこで、ブラウザがページをキャッシュしないようにヘッダーを設定してみました。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

また、問題は解決しませんでした。

このページはChromeで正常に機能します。

私が使用しているFirefoxのバージョンは12.0です

Javascript、JQuery、またはその他のクライアント側スクリプトを使用してページをリロードするにはどうすればよいですか?

4

2 に答える 2

5

メモリ内にキャッシュされたページに戻るときに発生するonloadイベントはありません。

あなたには3つの主な選択肢があると思います:

  1. onpageshowイベントを使用します(キャッシュされたページに移動すると発生します)。
  2. アンロードイベントリスナー(空の関数の場合もあります)を追加して、ページのメモリ内キャッシュを防止します。
  3. 迷惑なアンロードアニメーションを実行しないでください。
于 2012-05-02T00:35:43.537 に答える
0

私はそれを試しませんでしたが、setTimeoutが役立つかもしれません。

<script>
setTimeout(function() {
var e=document.getElementById("refreshed");
    if(e.value=="no")e.value="yes";
    else{e.value="no";location.reload();}
}, 1000);
</script>
于 2012-05-01T23:28:25.347 に答える