某所の"MochiKit.Async JSONP"を使わさせていただきました。

どうやら、IEがクラッシュする問題を抱えているようです。

JSONPを返すプログラムを、mod_cacheを利用してサーバ側でキャッシュしています。ところが、コールバック関数名がリクエストごとに毎回異なっていると、mod_cacheでは(たぶん)キャッシュできません(URLをキーとしているはず)。このため、タイムスタンプを利用せずに何とかできないものかと試行錯誤してみました。

ロードのたびにユニークにしなければならなかったのは、script要素を削除している辺りにIEのバグが潜んでいたかららしいので、その辺を中心にtry&error。

if (typeof(MochiKit.Async.JSONPCallbacks) == 'undefined') {
    MochiKit.Async.JSONPCallbacks = {

        nextCallbackId: MochiKit.Base.counter()
    };
}
try {
    /* remove script element */
    setTimeout(
        function(){
            var element = document.getElementById('_JSONPRequest' + callbackId);
            element.parentNode.removeChild(element);
        }, 100);

} catch (e) {
    // pass
}

以下のページに従って、setTimeoutを使ってscript要素の削除を遅延させてみました。
掲示板/JavaScript質問板/過去ログ/一覧/ removeChildでIEが落ちる - TAG index

手元の環境では落ちなくなったように思いますが、"描画が追いつかなくなると"という事なので、環境によっては変わらず落ちる気がしています。


いざとなったら、script要素を削除しなければ。。。

プロフィール

このブログ記事について

このページは、koshigoeが2007年4月 2日 19:15に書いたブログ記事です。

ひとつ前のブログ記事は「FUSEのPythonバインディングで遊ぶ準備の準備」です。

次のブログ記事は「ねずみ、ドリフト失敗、のたうち回る。の巻き」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。