完美解決JS文件頁面加載時的阻塞問題
關(guān)于頁面加載時的時間消費,許多書中都做出了介紹,也提出了很多種方法。本文章就詳細介紹XHR注入。
概述:JS分拆的方法
1.XHR注入:就是用ajax異步請求同域包含腳本的文件,然后將返回的字符串轉(zhuǎn)化為腳本使用,該方法不會造成頁面渲染和onload事件的阻塞,因為是異步處理,推薦使用。
2.iframe注入:加載一個iframe框架,通過使用iframe框架中的腳本來避免src方式加載腳本的阻塞,但是iframe元素開銷較大,不推薦。
3.DOM注入:就是創(chuàng)建script元素,通過制定該元素的src并放入DOM樹中,根據(jù)該語句書寫的文字不同,會造成渲染或onload事件的阻塞。
4. document.write方法:在JS腳本中使用document.write('<script>XXX</script>');這種方法簡單粗暴,但是它仍然會造成阻塞,所改變的只是什么時候阻塞。
詳細介紹:
第一步:創(chuàng)造ajax函數(shù):1建立XMLHTTPRequest或ActiveXObject對象 2.ajax對象的open方法 3.ajax對象的send方法 4.改寫onreadystatechange事件,判斷status(200)和readyState(4)屬性值,對請求數(shù)據(jù)類型操作。
第二步:用ajax函數(shù)請求一個JS文件。
第三步:兩個分支:第一種:拿來主義,eval(請求返回字符串);執(zhí)行了JS中的函數(shù),達到目的。
第二種:創(chuàng)建script對象,利用該對象的text屬性賦值 返回字符串 方式,達到目的。
看代碼:
實例JS文件:創(chuàng)建一個100X100的黑色div,并加載到指定元素中。
function test() { oDiv = document.createElement('div'); oDiv.style['width'] = '100px'; oDiv.style['height'] = '100px'; oDiv.style['background'] = 'black'; document.getElementById('header').appendChild(oDiv); } test();
頁面使用該JS文件
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style type="text/css"> *{ margin:0; padding:0;} </style> </head> <body> <div id="header" style=" height:150px; background-color:Red;"></div> <div id="init"> <script type="text/javascript"> //Ajax獲取字符串 function Ajax(Method,url,funcSucc,funcFalse) { if (XMLHttpRequest) var oAjax = new XMLHttpRequest(); else { var oAjax = new ActiveXObject('Microsoft.XMLHTTP'); } oAjax.open(Method, url, true); oAjax.send(); oAjax.onreadystatechange = function () { if (oAjax.readyState == 4) { if (oAjax.status == 200) { var str = oAjax.responseText; funcSucc(str); } else { funcFalse(); } } }; Ajax('GET', 'javascript/load.js', function (str) { eval(str); // var oScript = document.createElement('script'); // oScript.text = str; // document.getElementsByTagName('head')[0].appendChild(oScript); }, function () { alert('失敗'); }); </script> </div> </body> </html>
以上這篇完美解決JS文件頁面加載時的阻塞問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JS實現(xiàn)獲取圖片大小和預覽的方法完整實例【兼容IE和其它瀏覽器】
這篇文章主要介紹了JS實現(xiàn)獲取圖片大小和預覽的方法,結(jié)合完整實例形式分析了javascript針對不同瀏覽器處理圖片上傳與預覽等操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-04-04JavaScript實現(xiàn)對JSON對象數(shù)組數(shù)據(jù)進行分頁處理
這篇文章主要介紹了使用JavaScript實現(xiàn)對JSON對象數(shù)組數(shù)據(jù)進行分頁處理,文中有詳細的代碼示例供大家參考,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-10-10JavaScript 手動實現(xiàn)instanceof的方法
instanceof運算符用于檢測構(gòu)造函數(shù)的prototype屬性是否出現(xiàn)在某個實例對象的原型鏈上,本文重點給大家介紹JavaScript手動實現(xiàn)instanceof的問題,感興趣的朋友跟隨小編一起看看吧2021-10-10Javascript實現(xiàn)簡單的富文本編輯器附演示
這篇文章主要介紹了通過Javascript實現(xiàn)的簡單富文本編輯器,需要的朋友可以參考下2014-06-06解決typescript項目報錯:找不到模塊“xxx”或其相應的類型聲明問題
這篇文章主要介紹了解決typescript項目報錯:找不到模塊“xxx”或其相應的類型聲明問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06