Spaces:
Runtime error
Runtime error
| /*! | |
| * jQuery imagesLoaded plugin v2.1.0 | |
| * http://github.com/desandro/imagesloaded | |
| * | |
| * MIT License. by Paul Irish et al. | |
| */ | |
| /*jshint curly: true, eqeqeq: true, noempty: true, strict: true, undef: true, browser: true */ | |
| /*global jQuery: false */ | |
| ;(function($, undefined) { | |
| ; | |
| // blank image data-uri bypasses webkit log warning (thx doug jones) | |
| var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=='; | |
| $.fn.imagesLoaded = function( callback ) { | |
| var $this = this, | |
| deferred = $.isFunction($.Deferred) ? $.Deferred() : 0, | |
| hasNotify = $.isFunction(deferred.notify), | |
| $images = $this.find('img').add( $this.filter('img') ), | |
| loaded = [], | |
| proper = [], | |
| broken = []; | |
| // Register deferred callbacks | |
| if ($.isPlainObject(callback)) { | |
| $.each(callback, function (key, value) { | |
| if (key === 'callback') { | |
| callback = value; | |
| } else if (deferred) { | |
| deferred[key](value); | |
| } | |
| }); | |
| } | |
| function doneLoading() { | |
| var $proper = $(proper), | |
| $broken = $(broken); | |
| if ( deferred ) { | |
| if ( broken.length ) { | |
| deferred.reject( $images, $proper, $broken ); | |
| } else { | |
| deferred.resolve( $images ); | |
| } | |
| } | |
| if ( $.isFunction( callback ) ) { | |
| callback.call( $this, $images, $proper, $broken ); | |
| } | |
| } | |
| function imgLoaded( img, isBroken ) { | |
| // don't proceed if BLANK image, or image is already loaded | |
| if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) { | |
| return; | |
| } | |
| // store element in loaded images array | |
| loaded.push( img ); | |
| // keep track of broken and properly loaded images | |
| if ( isBroken ) { | |
| broken.push( img ); | |
| } else { | |
| proper.push( img ); | |
| } | |
| // cache image and its state for future calls | |
| $.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } ); | |
| // trigger deferred progress method if present | |
| if ( hasNotify ) { | |
| deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] ); | |
| } | |
| // call doneLoading and clean listeners if all images are loaded | |
| if ( $images.length === loaded.length ){ | |
| setTimeout( doneLoading ); | |
| $images.unbind( '.imagesLoaded' ); | |
| } | |
| } | |
| // if no images, trigger immediately | |
| if ( !$images.length ) { | |
| doneLoading(); | |
| } else { | |
| $images.bind( 'load.imagesLoaded error.imagesLoaded', function( event ){ | |
| // trigger imgLoaded | |
| imgLoaded( event.target, event.type === 'error' ); | |
| }).each( function( i, el ) { | |
| var src = el.src; | |
| // find out if this image has been already checked for status | |
| // if it was, and src has not changed, call imgLoaded on it | |
| var cached = $.data( el, 'imagesLoaded' ); | |
| if ( cached && cached.src === src ) { | |
| imgLoaded( el, cached.isBroken ); | |
| return; | |
| } | |
| // if complete is true and browser supports natural sizes, try | |
| // to check for image status manually | |
| if ( el.complete && el.naturalWidth !== undefined ) { | |
| imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 ); | |
| return; | |
| } | |
| // cached images don't fire load sometimes, so we reset src, but only when | |
| // dealing with IE, or image is complete (loaded) and failed manual check | |
| // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f | |
| if ( el.readyState || el.complete ) { | |
| el.src = BLANK; | |
| el.src = src; | |
| } | |
| }); | |
| } | |
| return deferred ? deferred.promise( $this ) : $this; | |
| }; | |
| })(jQuery); |