0

Мой текущего приложения AJAX с помощью JQuery выглядит следующим образом (упрощенный):XmlHttpRequest Прогресс EventHandler Совместимость в Internet Explorer

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

Я обновил этот код, чтобы использовать progress EventHandler следующим образом.

$.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 не вызывают обработчик событий progress, но success, когда все загружается.

Так что я задаюсь вопросом, есть ли проблемы совместимости в этих старых версиях Internet Explorer. К сожалению, я не смог найти какой-либо ресурс, который точно определяет, какие части XmlHttpRequest работают в IE-версии. Кто-нибудь знает такой ресурс или что может быть неправильным в коде?

ответ

0

Вы можете использовать как обратные вызовы beforeSend, так и complete вместо переопределения реализации xhr.

+0

Определение обработчика событий 'progress' в' beforeSend' не работает, возможно, потому, что сам jQuery не поддерживает 'progress'. – str

Смежные вопросы