Подтвердить что ты не робот

XDomainRequest vs XMLHTTPRequest

Мы создаем приложение, использующее PixiJS, в котором есть динамический загрузчик json.

Он загружает файлы .json, используя следующее:

if(window.XDomainRequest)
{
    this.ajaxRequest = new window.XDomainRequest();
}
else if (window.XMLHttpRequest)
{
    this.ajaxRequest = new window.XMLHttpRequest();
}
else
{
    this.ajaxRequest = new window.ActiveXObject('Microsoft.XMLHTTP');
}

Который, кажется, работает везде, кроме телефона Windows и IE. Однако, если я поменяю XMLHttpRequest на XDomainRequest, он отлично работает.

Итак, может кто-нибудь объяснить различия между XDomainRequest и XMLHTTPRequest? Какой из них должен иметь преимущество над другим?

4b9b3361

Ответ 1

XDomainRequest - единственный способ иметь XHR, который поддерживает CORS в IE8 и 9. Во время IE8 Microsoft решила прийти с их собственным CORS XHR, а не стандартным CORS XMLHttpRequest, который теперь используется в IE10. Поскольку IE10, XDomainRequest удален (редактор: см. Комментарий).

Вы должны использовать XDomainRequest, если вам нужен CORS в IE8/9. XDomainRequest не является полностью взаимозаменяемым с XMLHttpRequest, интерфейсы не совсем то же самое. Например, это не поддерживает событие onreadystatechange. Поэтому, если вы хотите переключаться между ними, как в вопросе, вам нужно убедиться, что вы используете onload not onreadystatechange и проверьте, что любая другая функциональность является взаимозаменяемой.

Вот пример использования в этом .