From: Kevin Ball Date: Wed, 26 Apr 2017 22:44:50 +0000 (-0700) Subject: Merge branch 'develop' into move-to-webpack X-Git-Tag: v6.4.0-rc1~51^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F9965%2Fhead;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Merge branch 'develop' into move-to-webpack --- 8495e52234ab784e30fcbb6db9d2b086403a467e diff --cc js/foundation.util.imageLoader.js index 8b76480d4,000000000..9fe1d215f mode 100644,000000..100644 --- a/js/foundation.util.imageLoader.js +++ b/js/foundation.util.imageLoader.js @@@ -1,42 -1,0 +1,45 @@@ +'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() { ++ images.each(function(){ + // Check if image is loaded - if (this.complete || (this.readyState === 4) || (this.readyState === 'complete')) { ++ if (this.complete && this.naturalWidth !== undefined) { + singleImageLoaded(); + } - // Force load the image + else { - // fix for IE. See https://css-tricks.com/snippets/jquery/fixing-load-in-ie-for-cached-images/ - var src = $(this).attr('src'); - $(this).attr('src', src + (src.indexOf('?') >= 0 ? '&' : '?') + (new Date().getTime())); - $(this).one('load', function() { ++ // 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 };