XDomainRequest与XMLHTTPRequest

时间:2014-08-05 14:42:43

标签: javascript ajax internet-explorer windows-phone pixi.js

我们正在使用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之间的区别吗?哪一个优先于另一个?

1 个答案:

答案 0 :(得分:14)

XDomainRequest是IE8和9中支持CORS的XHR的唯一方法。在IE8时,Microsoft决定提出自己的CORS XHR,而不是现在使用的标准CORS XMLHttpRequest在IE10中。自IE10起,XDomainRequest已被删除(编辑:见注释)。

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

answer中有一个示例用法。