| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | 
							- (function($, window, document) {
 
- 	var ImageLazyload = $.Lazyload.extend({
 
- 		init: function(element, options) {
 
- 			this._super(element, options);
 
- 		},
 
- 		_init: function() {
 
- 			this.options.selector = '[data-lazyload]';
 
- 			this._super();
 
- 		},
 
- 		_set: function(element, uri) {
 
- 			if (element.tagName === 'IMG') {
 
- 				element.src = uri;
 
- 			} else {
 
- 				element.style.backgroundImage = "url(" + uri + ")";
 
- 			}
 
- 		},
 
- 		_hasPlaceholder: function(element) {
 
- 			if (element.offsetWidth) {
 
- 				if (element.tagName === 'IMG') {
 
- 					return !!element.src;
 
- 				} else {
 
- 					return !!element.style.backgroundImage;
 
- 				}
 
- 			}
 
- 			return false;
 
- 		},
 
- 		_addPlaceHolder: function(element) {
 
- 			var self = this;
 
- 			if (element.tagName === 'IMG') {
 
- 				self._counter++;
 
- 				element.onload = function() {
 
- 					self._counter--;
 
- 					self.addCallback(element, self.handle);
 
- 					this.onload = null;
 
- 				};
 
- 				self.onPlaceHolder(function(placeholder) {
 
- 					self._set(element, placeholder);
 
- 				});
 
- 			} else {
 
- 				element.style.backgroundImage = "url(" + self.options.placeholder + ")";
 
- 			}
 
- 		},
 
- 		addElement: function(element) {
 
- 			var self = this;
 
- 			var uri = element.getAttribute('data-lazyload');
 
- 			if (uri) {
 
- 				if (self._hasPlaceholder(element)) {
 
- 					self.addCallback(element, self.handle);
 
- 				} else {
 
- 					self.onPlaceHolder = self._createLoader(function(callback) {
 
- 						var img = new Image();
 
- 						var placeholder = self.options.placeholder;
 
- 						img.src = placeholder;
 
- 						img.onload = img.onerror = function() {
 
- 							callback(placeholder);
 
- 						};
 
- 					});
 
- 					self._addPlaceHolder(element);
 
- 				}
 
- 				return true;
 
- 			}
 
- 			return false;
 
- 		},
 
- 		set: function(element, uri) {
 
- 			var self = this;
 
- 			var img = new Image();
 
- 			img.onload = function() {
 
- 				self._set(element, uri);
 
- 				$.trigger(self.element, 'success', {
 
- 					element: element,
 
- 					uri: uri
 
- 				});
 
- 			};
 
- 			img.onerror = function() {
 
- 				$.trigger(self.element, 'error', {
 
- 					element: element,
 
- 					uri: uri
 
- 				});
 
- 			};
 
- 			img.src = uri;
 
- 			element.removeAttribute('data-lazyload'); //只尝试一次,后续可能支持多次尝试
 
- 		},
 
- 		handle: function(element, key) {
 
- 			var uri = element.getAttribute('data-lazyload');
 
- 			if (uri) {
 
- 				this.set(element, uri);
 
- 				//element.parentNode.parentNode.setAttribute('data-lazyload', 'true'); //debug
 
- 			}
 
- 		},
 
- 		destroy: function() {
 
- 			this._super();
 
- 			this.element.removeAttribute('data-imageLazyload');
 
- 		}
 
- 	});
 
- 	$.fn.imageLazyload = function(options) {
 
- 		var lazyloadApis = [];
 
- 		this.each(function() {
 
- 			var self = this;
 
- 			var lazyloadApi = null;
 
- 			if (self === document || self === window) {
 
- 				self = document.body;
 
- 			}
 
- 			var id = self.getAttribute('data-imageLazyload');
 
- 			if (!id) {
 
- 				id = ++$.uuid;
 
- 				$.data[id] = lazyloadApi = new ImageLazyload(self, options);
 
- 				self.setAttribute('data-imageLazyload', id);
 
- 			} else {
 
- 				lazyloadApi = $.data[id];
 
- 			}
 
- 			lazyloadApis.push(lazyloadApi);
 
- 		});
 
- 		return lazyloadApis.length === 1 ? lazyloadApis[0] : lazyloadApis;
 
- 	}
 
- })(mui, window, document);
 
 
  |