XDomainRequest与XMLHTTPRequest的区别

15

我们正在使用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 Phone和IE上都无法正常工作。 但是,如果我使用XDomainRequest来替换XMLHttpRequest,它就可以正常工作。

因此,请问有人能解释一下XDomainRequest和XMLHTTPRequest之间的区别吗?哪一个应该优先于另一个?

1个回答

16

XDomainRequest是在IE8和9中支持CORS的XHR的唯一方式。在IE8时,微软决定推出自己的CORS XHR,而不是现在在IE10中使用的标准CORS XMLHttpRequest。自IE10以来,XDomainRequest已被删除(编辑:请参见评论)。

如果您需要在IE8/9中使用CORS,则应仅使用XDomainRequest。 XDomainRequest与XMLHttpRequest不完全可互换,接口并不完全相同。其中一个例子是它不支持onreadystatechange事件。因此,如果您想像问题中那样在它们之间切换,则需要确保您使用onload而不是onreadystatechange,并检查任何其他功能是否可互换。

这里有一个answer中的示例用法。


5
据我所知,XDomainRequest在IE10中已经被弃用,但仍然存在。它在IE11中被移除了。 - Oliver Kötter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接