【问题标题】:XDomainRequest vs XMLHTTPRequestXDomainRequest 与 XMLHTTPRequest
【发布时间】:2014-09-28 06:47:03
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    answer 中有一个示例用法。

    【讨论】:

    • 据我所知,XDomainRequest 在 IE10 中已被贬低,但仍然存在。它在 IE11 中被删除。
    猜你喜欢
    • 2013-08-07
    • 2013-03-05
    • 1970-01-01
    • 2011-06-11
    • 2012-01-29
    • 2010-11-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多