I want to know if the browser supportes XMLHttpRequest.responseType = "arraybuffer"
. Problem is, that I can not test agains some "general" xhr2 support, since iOS 4.2 has partial xhr2 support which includes (i.e.) XMLHttpRequestUpload
but not responseType = "arraybuffer"
.
I am using the following:
var supported = typeof new XMLHttpRequest().responseType === 'string';
In all browsers I tested that support this, the default value of responseType is an empty string (just like it says in the spec: http://www.w3.org/TR/XMLHttpRequest/#the-responsetype-attribute ), in browsers that don't support responseType the value of the attribute is undefined.
Checking of ArrayBuffer
should be a good feature detection.
If a userAgent supports the ArrayBuffer
object then it's likely it will work with XHR2
However as noted, it would be best to do a feature test and not a feature detection.
function IsArrayBufferSupported(cb){
var xhr = new XMLHttpRequest();
xhr.open('GET', '/', true);
try {
xhr.responseType = "arraybuffer";
} catch (e){
return cb(false);
}
xhr.onload = function onload() {
if (ArrayBuffer.prototype.isPrototypeOf(this.response)) {
return cb(true);
}
cb(false);
}
xhr.send();
}
Set responseType
to "arraybuffer"
and check if it got the new value:
// call like isResponseTypeSupported('arraybuffer')
function isResponseTypeSupported(responseType) {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/');
try {
xhr.responseType = responseType;
} catch (e) {
return false;
}
return xhr.responseType === responseType;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With