国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

重寫document.write實(shí)現(xiàn)無阻塞加載script

2019-11-06 08:20:32
字體:
供稿:網(wǎng)友
document.write是在頁面渲染的時(shí)候同步進(jìn)行的,必須要等javascript代碼下載好并且document.write執(zhí)行完后才接著渲染后面的內(nèi)容,如果東西比較多的話,就會(huì)導(dǎo)致頁面阻塞,會(huì)讓用戶覺得你這個(gè)網(wǎng)頁很慢,解決辦法如下:

重寫document.write實(shí)現(xiàn)無阻塞加載script

/* 全局存儲(chǔ)變量 */

var global = { variable : {},//數(shù)據(jù)變量 cache : {},//數(shù)據(jù)緩存 sitepath : '/',//網(wǎng)站根目錄 loadScript : {},//延遲加載 loadScriptId : [],//延遲加載Id loadScriptNum : 0,//當(dāng)前加載元素 loadScriptT : '',//延遲開關(guān)}

/* 全局方法 */

var common = { /** * 重寫document.write實(shí)現(xiàn)無阻塞加載script * @param { Dom Object } textarea元素 */ loadScript : function( elem ){ if(elem != undefined){ if(global.loadScriptT != 0 && global.loadScriptT != undefined){ clearTimeout(global.loadScriptT); } global.loadScript[elem.id] = elem; global.loadScriptT = setTimeout(function(){ for(var a in global.loadScript){ global.loadScriptId.push(a); } common.loadScriptOrder(global.loadScriptNum); },300); } }, loadScriptAuto : function(){ $('textarea[id^=loadScript]').each(function(a,b){ common.loadScript(b); }); }, loadScriptOrder : function(i){ clearTimeout(global.loadScriptT); if(global.loadScriptId[i] != undefined){ global.loadScriptT = setTimeout(function(){ common.loadScriptRun(global.loadScript[global.loadScriptId[i]]); global.loadScriptNum = i+1; common.loadScriptOrder(global.loadScriptNum); },300); } }, loadScriptRun : function( elem ){ if(typeof elem == 'undefined') return; var url = elem.value.match( /src="([/s/S]*?)"/i )[1]; // 緩存原生的document.write var docWrite = document.write; // 創(chuàng)建一個(gè)新script來加載 var script = document.createElement( 'script' ); var head = document.head || document.getElementsByTagName( 'head' )[0] || document.documentElement; // 重寫document.write document.write = function( text ){ $('#'+elem.id).replaceWith($(text)); //elem.parentNode.replaceChild(text,elem); }; script.type = 'text/Javascript'; script.src = url; script.onerror = script.onload = script.onreadystatechange = function( e ){ e = e || window.event; if( !script.readyState || /loaded|complete/.test(script.readyState) ||e === 'error'){ // 恢復(fù)原生的document.write document.write = docWrite; head.removeChild( script ); // 卸載事件和斷開DOM的引用 // 盡量避免內(nèi)存泄漏 head = elem = script = script.onerror = script.onload = script.onreadystatechange = null; } } // 加載script head.insertBefore( script, head.firstChild ); delete global.loadScript[elem.id]; },}

使用方法

引入js文件,然后調(diào)用方法

common.loadScript(document.getElementById('idname'));
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 星子县| 宝清县| 泰来县| 哈巴河县| 栾城县| 会泽县| 楚雄市| 宜城市| 临湘市| 育儿| 绥棱县| 卢氏县| 辽源市| 大港区| 嘉义县| 科尔| 娱乐| 土默特右旗| 黄梅县| 双城市| 独山县| 金沙县| 江源县| 大同市| 黎川县| 黄冈市| 临武县| 北流市| 乐昌市| 曲阜市| 海丰县| 苏尼特左旗| 宁远县| 长子县| 永寿县| 宿迁市| 利川市| 万盛区| 通江县| 大方县| 南靖县|