2009-08-08 2 views
8

Есть ли способ проверить внутри JavaScript, если объект XMLHttpRequest поддерживает W3C Progress Events? Я имею в виду здесь, если параметры onload, onprogress, onabort, onerror и т. Д. Для некоторой функции обработчика будут иметь такую ​​функцию, называемую этими событиями, как описано.Как проверить JavaScript, если объект XMLHttpRequest поддерживает W3C Progress Events?

Дополнительный (бонусный) вопрос: есть ли способ увеличить XMLHttpRequest (например, используя некоторые таймеры) для поддержки этих событий?

Sidenote: Я первый нашел около События W3C Прогресс в контексте XMLHttpRequest here

ответ

9

Вы пробовали делать это таким образом?

try { 
    var xhr = new XMLHttpRequest(); 

    if ('onprogress' in xhr) { 
     // Browser supports W3C Progress Events 
    } else { 
     // Browser does not support W3C Progress Events 
    } 
} catch (e) { 
    // Browser is IE6 or 7 
} 

Я испытал это в Firefox & IE8. Firefox показывает, что он поддерживает его. IE говорит, что у него нет поддержки для событий W3C Progress.

+0

Альтернатива 'if (xhr.onload! == undefined) {...}' использовать 'if ('onload' в xhr) {...}' –

+1

лучше проверить для 'onprogress' в xhr, потому что некоторые браузеры (Opera) реализуют onload/onerror, но не onprogress, хотя Opera doens't запускает onprogress, но его можно эмулировать с помощью: setInterval ({if (xhr.readyState === 3 && xhr.responseText! = = последний) xhr.onprogress();}, 250); – 4esn0k

+0

@ 4esn0k Я обновил свой ответ. Я не знал, что Opera имеет другую реализацию. Благодарю. –