Added XDomainRequest as fallback method for ajax, if XMLHttpRequest fails.

This commit is contained in:
Hasse Feldthaus 2015-07-29 17:16:19 +02:00
parent 1c17374de1
commit 565e7cd097

View File

@ -2045,8 +2045,40 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){
request.onreadystatechange = function(){};
if ( $.isFunction( onError ) ) {
onError( request, e );
if (window.XDomainRequest) { // IE9 or IE8 might as well try to use XDomainRequest
var xdr = new XDomainRequest();
if (xdr) {
xdr.onload = function (e) {
if ( $.isFunction( onSuccess ) ) {
onSuccess({ // Faking an xhr object
responseText: xdr.responseText,
status: 200, // XDomainRequest doesn't support status codes, so we just fake one! :/
statusText: 'OK'
});
}
}
xdr.onerror = function (e) {
if ( $.isFunction ( onError ) ) {
onError({ // Faking an xhr object
responseText: xdr.responseText,
status: 444, // 444 No Response
statusText: 'An error happened. Due to an XDomainRequest deficiency we can not extract any information about this error. Upgrade your browser.'
});
}
}
try {
xdr.open('GET', url);
xdr.send();
} catch (e) {
if ( $.isFunction( onError ) ) {
onError( request, e );
}
}
}
} else {
if ( $.isFunction( onError ) ) {
onError( request, e );
}
}
}
},