4

これがこのサイトでの最初の投稿であることを認めなければならないので、何か間違ったこと (書式設定など) を行った場合は、アドバイスとしてお詫びします。

とにかく、私は javascript (および jQuery) を使用して一種の mmo を作成しています。これまでのところ、Chrome、Safari、Firefox などですべて正常に動作しています。ただし、途中で Internet Explorer がクラッシュすることがわかりました。

クラッシュを再現することで、次のコードに絞り込みました。

function getUpdates(){
var data={uid:playerName,area:1,mid:lastMessage};
$.ajax({ 
    url: "getUpdates.py", 
    timeout: 32000,
    data: data,
    type:"GET",
    complete: function(obj, textStatus){
            //handleUpdates(obj);
        getUpdates();
        }
    });
}

これは、長期間にわたって更新をポーリングすることになっています。ただし、IE では、1 回の応答の後、このコードが無限ループに陥り、ブラウザがクラッシュします。サーバーの応答がない場合にのみ、応答のたびにクラッシュするようには見えません。

「complete:...」という行は次のように試行されていることに注意してください。

success: function(...){getUpdates();...},
error: function(...){getUpdates();...}

同じ問題が発生しています。

4

1 に答える 1

12

IE はキャッシュから即座に AJAX 呼び出しを返します。

次のように、URL にランダムなパラメーターを追加して、IE がそのキャッシュを無視するように強制する必要があります。

url: "getUpdates.py?RandomNumber=" + Math.random(), 

( も使用できますnew Date)


また、5 秒の遅延を追加して、更新をもう少しゆっくりと確認する必要があります。

complete: function(obj, textStatus){
        //handleUpdates(obj);
    setTimeout(function() { getUpdates(); }, 5000);   //milliseconds
}
于 2010-09-06T02:28:26.860 に答える