/*!
* jQuery & Zepto Lazy - iFrame Plugin - v1.5 * 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 iframe content, like: // <iframe data-src="iframe.html"></iframe> // // enable content error check with: // <iframe data-src="iframe.html" data-error-detect="true"></iframe> $.lazy(["frame", "iframe"], "iframe", function(element, response) { var instance = this; if( element[0].tagName.toLowerCase() === "iframe" ) { var srcAttr = "data-src", errorDetectAttr = "data-error-detect", errorDetect = element.attr(errorDetectAttr); // default way, just replace the 'src' attribute if( errorDetect !== "true" && errorDetect !== "1" ) { // set iframe source element.attr("src", element.attr(srcAttr)); // remove attributes if( instance.config("removeAttribute") ) element.removeAttr(srcAttr + " " + errorDetectAttr); } // extended way, even check if the document is available else { $.ajax({ url: element.attr(srcAttr), dataType: "html", crossDomain: true, xhrFields: {withCredentials: true}, /** * success callback * @access private * @param {*} content * @return {void} */ success: function(content) { // set responded data to element's inner html element.html(content) // change iframe src .attr("src", element.attr(srcAttr)); // remove attributes if( instance.config("removeAttribute") ) element.removeAttr(srcAttr + " " + errorDetectAttr); }, /** * error callback * @access private * @return {void} */ error: function() { // pass error state to lazy // use response function for Zepto response(false); } }); } } else { // pass error state to lazy // use response function for Zepto response(false); } });
})(window.jQuery || window.Zepto);