質問のために、単純な架空のシナリオを作成する必要があります。
リンクが 1 つある次の簡単なページがあり、ページ A と呼びます。
<a class="red-anchor" onclick="change_color(event);" href="http://mysite.com/b/">B</a>
関連する Javascript 関数を使用すると、次のようになります。
function change_color(e)
{
var event = e || window.event;
var link = event.target;
link.className = "green-anchor";
}
そして、クラス名に基づいてアンカーを赤または緑にする適切な CSS があります。
これは機能しています。つまり、アンカーをクリックすると、色が赤から緑に変わり、ブラウザーがページ B をロードする前に一時的に表示されます。
しかし、[戻る] ボタンを使用してページに戻ると、AI はブラウザーごとに異なる動作をします。
- Safari では、アンカーはまだ緑色です (望ましい動作)
- Firefox では赤に戻ります
Safari はページのキャッシュされたバージョンを何らかの形で更新していると思いますが、Firefox はそうではありません。
だから私の最初の質問は:キャッシュされたページを更新するために FF を取得する方法はありますか、それともここで何か他のことが起こっていますか?
第二に、私は ajax 呼び出しを使用する別の実装をしています。これで、セッション変数を使用してアンカーのクラスを設定します...
<a class="<?php echo $_SESSION["color"]; ?>" ...[snip]... >B</a>
そして、javascript 関数は、「色」セッション変数を変更する追加の ajax 呼び出しを行います。
この場合、Safari と Firefox の両方が期待どおりに動作します。B から A に戻るとき、色はまだ緑色です。しかし、なぜそれが非ajaxの場合と異なるのか、私の人生では理解できません。私はさまざまな順列を試しましたが、FF で機能するためには、「色」セッション変数を変更する必要があります (つまり、ajax 呼び出し自体がキャッシュをリロードしていません)。しかし、戻ってくると、ページはキャッシュからリロードされます (Firebug で検証済み)。そのため、ページを再処理してアンカーでその php のフラグメントを実行していない場合、ページはどのようにこのセッション変数にアクセスするのでしょうか?
ここには、私が理解していない基本的な何かがあるに違いないと思います。どんな洞察も大歓迎です。