mirror of
https://github.com/DanielnetoDotCom/YouPHPTube
synced 2025-10-04 10:19:24 +02:00
Lazy load images: speed up page loading times and decrease traffic
This commit is contained in:
parent
1a4965c27a
commit
3be99ba74e
30 changed files with 3312 additions and 59 deletions
73
view/js/jquery.lazy/plugins/jquery.lazy.ajax.js
Normal file
73
view/js/jquery.lazy/plugins/jquery.lazy.ajax.js
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*!
|
||||
* jQuery & Zepto Lazy - AJAX Plugin - v1.2
|
||||
* http://jquery.eisbehr.de/lazy/
|
||||
*
|
||||
* Copyright 2012 - 2017, Daniel 'Eisbehr' Kern
|
||||
*
|
||||
* Dual licensed under the MIT and GPL-2.0 licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl-2.0.html
|
||||
*/
|
||||
;(function($) {
|
||||
// load data by ajax request and pass them to elements inner html, like:
|
||||
// <div data-loader="ajax" data-src"url.html" data-method="post" data-type="html"></div>
|
||||
$.lazy("ajax", function(element, response) {
|
||||
ajaxRequest(this, element, response, element.attr("data-method"));
|
||||
});
|
||||
|
||||
// load data by ajax get request and pass them to elements inner html, like:
|
||||
// <div data-loader="get" data-src"url.html" data-type="html"></div>
|
||||
$.lazy("get", function(element, response) {
|
||||
ajaxRequest(this, element, response, "get");
|
||||
});
|
||||
|
||||
// load data by ajax post request and pass them to elements inner html, like:
|
||||
// <div data-loader="post" data-src"url.html" data-type="html"></div>
|
||||
$.lazy("post", function(element, response) {
|
||||
ajaxRequest(this, element, response, "post");
|
||||
});
|
||||
|
||||
/**
|
||||
* execute ajax request and handle response
|
||||
* @param {object} instance
|
||||
* @param {jQuery|object} element
|
||||
* @param {function} response
|
||||
* @param {string} [method]
|
||||
*/
|
||||
function ajaxRequest(instance, element, response, method) {
|
||||
$.ajax({
|
||||
url: element.attr("data-src"),
|
||||
type: method || "get",
|
||||
dataType: element.attr("data-type") || "html",
|
||||
|
||||
/**
|
||||
* success callback
|
||||
* @access private
|
||||
* @param {*} content
|
||||
* @return {void}
|
||||
*/
|
||||
success: function(content) {
|
||||
// set responded data to element's inner html
|
||||
element.html(content);
|
||||
|
||||
// use response function for Zepto
|
||||
response(true);
|
||||
|
||||
// remove attributes
|
||||
if( instance.config("removeAttribute") )
|
||||
element.removeAttr("data-src data-method data-type");
|
||||
},
|
||||
|
||||
/**
|
||||
* error callback
|
||||
* @access private
|
||||
* @return {void}
|
||||
*/
|
||||
error: function() {
|
||||
// pass error state to lazy
|
||||
// use response function for Zepto
|
||||
response(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
})(window.jQuery || window.Zepto);
|
Loading…
Add table
Add a link
Reference in a new issue