diff --git a/src/imageloader.js b/src/imageloader.js index d1f9e785..a61c8936 100644 --- a/src/imageloader.js +++ b/src/imageloader.js @@ -124,7 +124,8 @@ $.ImageLoader.prototype = /** @lends OpenSeadragon.ImageLoader.prototype */{ jobOptions = { src: options.src, crossOriginPolicy: options.crossOriginPolicy, - callback: complete + callback: complete, + abort: options.abort }, newJob = new ImageJob( jobOptions ); @@ -142,6 +143,13 @@ $.ImageLoader.prototype = /** @lends OpenSeadragon.ImageLoader.prototype */{ * @method */ clear: function() { + for( var i = 0; i < this.jobQueue.length; i++ ) { + var job = this.jobQueue[i]; + if ( typeof job.abort === "function" ) { + job.abort(); + } + } + this.jobQueue = []; } }; diff --git a/src/tiledimage.js b/src/tiledimage.js index ba587d07..9431502a 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -883,6 +883,9 @@ function loadTile( tiledImage, tile, time ) { crossOriginPolicy: tiledImage.crossOriginPolicy, callback: function( image ){ onTileLoad( tiledImage, tile, time, image ); + }, + abort: function() { + tile.loading = false; } }); } diff --git a/src/viewer.js b/src/viewer.js index 11b33e6d..155174d4 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -673,7 +673,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, THIS[ this.hash ].animating = false; this.world.removeAll(); this.imageLoader.clear(); - + /** * Raised when the viewer is closed (see {@link OpenSeadragon.Viewer#close}). * @@ -2926,6 +2926,7 @@ function resizeViewportAndRecenter( viewer, containerSize, oldBounds, oldCenter } function drawWorld( viewer ) { + viewer.imageLoader.clear(); viewer.drawer.clear(); viewer.world.draw();