我们正在使用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上,这似乎无处不在。
但是,如果我将XMLHttpRequest与XDomainRequest交换,则可以正常工作。
最后,有人可以解释XDomainRequest和XMLHTTPRequest之间的区别吗?哪个优先于另一个?
最佳答案
XDomainRequest是拥有在IE8和9中支持CORS的XHR的唯一方法。在IE8时代,Microsoft决定提出自己的CORS XHR,而不是现在在IE10中使用的标准CORS XMLHttpRequest。从IE10开始,XDomainRequest已被删除(编辑器:请参阅注释)。
如果在IE8 / 9中需要CORS,则仅应使用XDomainRequest。 XDomainRequest与XMLHttpRequest不能完全互换,接口(interface)并不完全相同。一个例子是它不支持onreadystatechange
事件。因此,如果您想像问题中那样在它们之间切换,则需要确保使用onload
而不是onreadystatechange
,并检查其他任何功能是否可互换。
此answer中有一个用法示例。