odin/node_modules/xhr-response/index.js
2022-11-26 15:56:34 +01:00

30 lines
943 B
JavaScript

'use strict';
/**
* Safely access the response body.
*
* @param {XHR} xhr XHR request who's body we need to safely extract.
* @returns {Mixed} The response body.
* @api public
*/
module.exports = function get(xhr) {
if (xhr.response) return xhr.response;
var type = xhr.responseType || '';
//
// Browser bugs:
//
// IE<10: Accessing binary data's responseText will throw an Exception
// Chrome: When responseType is set to Blob it will throw errors even when
// Accessing the responseText property.
//
// Firefox: An error is thrown when reading the `responseText` after unload
// when responseType is using a `moz-chunked-*` type.
// https://bugzilla.mozilla.org/show_bug.cgi?id=687087
//
if (~type.indexOf('moz-chunked') && xhr.readyState === 4) return;
if ('blob' !== type && 'string' === typeof xhr.responseText) {
return xhr.responseText || xhr.responseXML;
}
};