如何确定是使用XMLHttpRequest还是XDomainRequest?

时间:2013-03-17 11:17:14

标签: javascript xmlhttprequest

取决于浏览器,我想确定应该使用哪个对象。对于IE< 10应为XDomainRequest,其余为XMLHttpRequest

if(window.XDomainRequest) //basically 'if IE'
    //XDomainRequest
else
    //XMLHttpRequest

由于IE10具有跨源资源共享支持,因此最好使用XMLHttpRequest对象。这段代码将不再正常工作(我想IE10仍然支持XDomainRequest,如果我弄错了,请纠正我,我无法测试它)。直接检查浏览器并不是最安全的方法。所以我的问题是,确定应该使用哪个对象的最佳方法是什么?我正在寻找纯JS(非jQuery)解决方案。

1 个答案:

答案 0 :(得分:5)

我就是这样做的,但这并不好。

var useXDR = window.XDomainRequest && (window.XMLHttpRequest && new XMLHttpRequest().responseType === undefined);

它的工作原理是因为IE10对于新创建的XHR具有空字符串的responseType,但在不支持XHR2的IE版本中,它是未定义的。

如果您确实沿着这条路走下去,请记住XDR比XHR更难调试 - 当出现问题时它会为您提供更少的信息,并且即使在旧的XmlHttpRequest实现上也能正常工作的某些功能在全部在XDR上。

即使您的浏览器不支持XHR2并支持XDR,当您从加载页面时请求来自同一主机/端口的URL时,您仍然希望使用XHR。