From 565e7cd097cf0aabb8bae8ad7c84d470b2ff906e Mon Sep 17 00:00:00 2001 From: Hasse Feldthaus Date: Wed, 29 Jul 2015 17:16:19 +0200 Subject: [PATCH 1/3] Added XDomainRequest as fallback method for ajax, if XMLHttpRequest fails. --- src/openseadragon.js | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 64349972..0d2c894c 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -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 ); + } } } }, From 29d5401eed77ee25d84df8f404f464db418582ec Mon Sep 17 00:00:00 2001 From: Hasse Feldthaus Date: Wed, 29 Jul 2015 18:19:45 +0200 Subject: [PATCH 2/3] Added some missing semicolons. --- src/openseadragon.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 0d2c894c..fff59093 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -2056,7 +2056,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ statusText: 'OK' }); } - } + }; xdr.onerror = function (e) { if ( $.isFunction ( onError ) ) { onError({ // Faking an xhr object @@ -2065,7 +2065,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ 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(); From 8e591d1108ae5841b75f93c6cbe871b196becc1e Mon Sep 17 00:00:00 2001 From: Hasse Feldthaus Date: Wed, 29 Jul 2015 18:27:23 +0200 Subject: [PATCH 3/3] Renamed ambiguous event label. --- src/openseadragon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index fff59093..d8520766 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -2069,7 +2069,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ try { xdr.open('GET', url); xdr.send(); - } catch (e) { + } catch (e2) { if ( $.isFunction( onError ) ) { onError( request, e ); }