jQueryメモ

jQuery$.get を使うのにIEだとキャッシュしてしまってちょっと困る。かといって URL の最後にランダムな文字列を付けると、毎回ローカルにキャッシュを作ってしまってかなり迷惑な話に。

リクエストヘッダで If-Modified-Since を指定してやるとちゃんと見に行くらしいので、現状こんな感じで対処してる。コレで良いのかは分からないものの、ちゃんと動いてるので一応メモ。

$(function ()
{
    if ($.browser.msie)
    {
        $(document.body).ajaxSend(function (evt, request, settings)
        {
            if (!settings.ifModified && settings.type.toLowerCase() == 'get')
                request.setRequestHeader('If-Modified-Since',
                                         'Thu, 01 Jan 1970 00:00:00 GMT');
        });
    }

});

ココで使ってる ajaxSendドキュメント を見る限りだと引数は2個のはずなのですが、 この通りにやるとエラーになってしまう。

色々試してみると、どうやら第1引数にイベント(の拡張)が入って来てるらしく、その次から ドキュメント 通りの引数が入って来てる。 なので、とりあえず実際に入って来てる順番で受け取ってあげて、後は $.post とか getIfModifiedloadIfModified を邪魔しないように分岐してヘッダを埋めてやる。

現状これでちゃんと動いてるけど、IE 7とかってどうなんだろ?

Posted at: 
2007/07/10 22:19:08
2 Comments
0 TrackBacks
Tags: 
IE
JavaScript
jQuery
Trackback: 
http://humming.via-kitchen.com/2007/07/10/jquery-memo/trackback/

TrackBacks

まだ登録されていません。

Comments

fanfan

私はGETメソッドを利用してAJAXチャットをチャレンジしてみてていたがIEだとキャッシュされてしまって画面がなかなか更新してくれないことにさんざん悩んでいるところです。
そちら様のコードをそのままコピーして使ってみたら、てきぱき更新してくれました!
お見事!
ありがとうございました!

Created at: 
2007/10/22 15:18:01

nobu

こちらこそ、お役に立てて良かったです!
IEのキャッシュはいつでも悩みの種ですねー。

Created at: 
2007/10/22 17:20:08

Add Comment

Add Comment