0

jQuery を使用した現在の AJAX アプリケーションは次のようになります (簡略化)。

$.ajax({
    url: '/somefile',
    timeout : timeOutVar,
    success: function(data) {
        console.log('success');
    },
    error: function(data) {
        console.log('error');
    }
});

そのコードをprogress次のようにイベント ハンドラを使用するように更新しました。

$.ajax({
    url: '/somefile',
    timeout : timeOutVar,
    success: function(data) {
        console.log('success');
    },
    error: function(data) {
        console.log('error');
    },
    xhr: function() {
        var xhr = new window.XMLHttpRequest();
        xhr.addEventListener("progress", function(evt){
            console.log('progress');
        }, false);
        return xhr;
    }
});

これは、Internet Explorer 10 およびその他すべての最新のブラウザーで完全に機能します。しかし、古いバージョンの Internet Explorer では、問題が発生しました。IE9、8、7 はイベントハンドラを呼び出しませんprogresssuccess、すべてがロードされたときです。

したがって、これらの古いバージョンの Internet Explorer には互換性の問題があるのではないかと思います。残念ながら、XmlHttpRequestIE のどのバージョンでどの部分の作業が行われるかを正確に定義しているリソースを見つけることができませんでした。誰かがそのようなリソースを知っていますか、またはコードの何が間違っているのでしょうか?

4

1 に答える 1

0

xhr 実装をオーバーライドする代わりに、beforeSendとコールバックの両方を使用できます。complete

于 2013-06-25T08:26:52.820 に答える