日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript,css延迟加载器

發布時間:2024/4/17 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript,css延迟加载器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** js/css LazyLoad* * 變量hash記錄已經加載過的資源,避免重復加載* * Z.loadScript('a.js', function() { ... })** Z.loadScript('a.js', option, function() { ... })* * 加載多個js后才回調,如果某個js文件沒有下載下來則會報錯,且不會執行回調函數* Z.loadScript(['a.js','b.js','c.js'], function() { ... })* * option* charset: 'utf-8'* scope: xx* * 加載多個css后才回調,IE6/7/8/9和Opera中支持link的onreadystatechange事件* Firefox/Safari/Chrome既不支持onreadystatechange,也不支持onload。使用setTimeout延遲加載** Z.loadLink('a.css', function() { ... })* */var Z = {error : function(msg) {throw new Error(msg)},ua : window.navigator.userAgent.toLowerCase(),ie : /msie/.test(this.ua) && !/opera/.test(this.ua) };(function(Z) {var doc = window.document; var hash = {}; var types = ['Array', 'Function', 'Object', 'String', 'Number', 'Boolean', 'Date']; var nativeForEach = types.forEach; var emptyFunc = function () {}; var head = doc.head || doc.getElementsByTagName('head')[0];function forEach(obj, iterator, context) {if (obj == null) return;if (nativeForEach && obj.forEach === nativeForEach) {obj.forEach(iterator, context)} else if ( obj.length === +obj.length ) {for (var i = 0; i < obj.length; i++) {if (iterator.call(context||obj[i], obj[i], i, obj) === true) return}} else {for (var k in obj) {if (iterator.call(context||obj[k], obj[k], k, obj) === true) return}} }forEach(types, function(name) {Z['is' + name] = function(obj) {if (obj === undefined || obj === null) return false;return Object.prototype.toString.call(obj) === '[object ' + name + ']'} });function createEl(type, attrs) {var el = doc.createElement(type), attr;for (attr in attrs) {el.setAttribute(attr, attrs[attr])}return el } function done(list, obj) {hash[obj.url] = true;list.shift();if (!list.length) {obj.callback.call(obj.scope)} } function load(type, urls, option, callback) {if (Z.isString(urls)) {urls = [urls]}if (Z.isFunction(option)) {callback = option;option = {}}option = option || {};var obj = {scope: option.scope || window,callback: callback || emptyFunc};var list = [].concat(urls);var charset = option.charset || 'utf-8';forEach(urls, function(url, i) {var el = null;// 已經加載的不再加載if (hash[url]) {Z.error('warning: ' + url + ' has loaded.')}if (type === 'js') {el = createEl('script', {src: url,async: 'async',charset: charset})} else {el = createEl('link', {href: url,rel: 'stylesheet',type: 'text/css'})}(function(url) {if (Z.ie) {el.onreadystatechange = function() {var readyState = this.readyState;if(readyState === 'loaded' || readyState === 'complete') {obj.url = url;this.onreadystatechange = null;done(list, obj)}}} else {if (type == 'js') {el.onload = function() {obj.url = url;done(list, obj)};el.onerror = function () {Z.error(url + ' 不存在');}} else {setTimeout(function() {obj.url = url;done(list, obj)}, 100)}}})(url);if (type === 'js') {head.insertBefore(el, head.firstChild)} else {head.appendChild(el)}})}Z.loadScript = function(urls, option, callback) {load('js', urls, option, callback) };Z.loadLink = function(urls, option, callback) {load('css', urls, option, callback) }})(Z);

?

轉載于:https://www.cnblogs.com/fengyuqing/p/js-css-lazyload.html

總結

以上是生活随笔為你收集整理的javascript,css延迟加载器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。