¿Cómo determinar si usar XMLHttpRequest o XDomainRequest?

Depende del browser, me gustaría determinar qué object se debe utilizar. Para IE <10 debe ser XDomainRequest , para el rest XMLHttpRequest .

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

Como IE10 tiene el soporte de Intercambio de resources de origen cruzado, es mejor usar el object XMLHttpRequest con él. Este código ya no funcionará bien (supongo que IE10 aún tiene soporte para XDomainRequest , XDomainRequest si me equivoco, no puedo probarlo). La comprobación directa del browser no es la forma más segura de determinar las cosas. Entonces mi pregunta, ¿cuál es la mejor manera de determinar qué object se debe utilizar? Estoy buscando una solución JS (no jQuery) pura.

One Solution collect form web for “¿Cómo determinar si usar XMLHttpRequest o XDomainRequest?”

Así es como lo hago, pero no es agradable.

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

Funciona porque IE10 tiene un responseType de la cadena vacía para un XHR recién creado, pero en las versiones de IE que no son compatibles con XHR2, no está definido.

Si avanza por este path, tenga en count que XDR es mucho más difícil de depurar que XHR; le da less información cuando algo sale mal, y algunas características que funcionan bien incluso en implementaciones anteriores de XmlHttpRequest no funcionan en absoluto en XDR. .

Incluso si su browser no es compatible con XHR2 y si es compatible con XDR, igual querrá usar XHR cuando solicite urls desde el mismo host / puerto desde el que se carga su página.

  • XMLHTTPRequest.status devuelve 0 y responseText está en blanco en FireFox 3.5
  • El acceso se niega en IE11 en AngularJS
  • ¿Cómo puedo usar contenido desinflado / comprimido con una function XHR onProgress?
  • ¿Cómo get el campo "Datos" de xhr.responseText?
  • ¿Chrome es totalmente compatible con la API de performance para todas las inputs de resources?
  • XMLHttpRequest misma política de origen
  • ¿El object XMLHttpRequest se cierra después de recibir la respuesta?
  • CORS con encabezados php
  • XMLHttpRequest en google-chrome no informa events de progreso
  • Puntos de interrupción XHR en herramientas de desarrollador de Firefox
  • ¿Cómo puedo hacer una request sincrónica con jQuery?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.