123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 'use strict';
- import $ from 'jquery';
- /**
- * Runs a callback function when images are fully loaded.
- * @param {Object} images - Image(s) to check if loaded.
- * @param {Func} callback - Function to execute when image is fully loaded.
- */
- function onImagesLoaded(images, callback){
- var self = this,
- unloaded = images.length;
- if (unloaded === 0) {
- callback();
- }
- images.each(function(){
- // Check if image is loaded
- if (this.complete && typeof this.naturalWidth !== 'undefined') {
- singleImageLoaded();
- }
- else {
- // If the above check failed, simulate loading on detached element.
- var image = new Image();
- // Still count image as loaded if it finalizes with an error.
- var events = "load.zf.images error.zf.images";
- $(image).one(events, function me(event){
- // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.
- $(this).off(events, me);
- singleImageLoaded();
- });
- image.src = $(this).attr('src');
- }
- });
- function singleImageLoaded() {
- unloaded--;
- if (unloaded === 0) {
- callback();
- }
- }
- }
- export { onImagesLoaded };
|