1.动态加载脚本
<script type="text/javascript">
function loadScript(url){
var script=document.createElement("script");
script.type="text/javascript";
script.src='/images/loading.gif' data-original=url;
document.body.appendChild(script);
}
loadScript("js/side-panel.js");
2.XHR Injection 使用动态创建script元素,来写入脚本,在某些情况下可能比上一种方法要快些。
/*var xhrObj = new
xhrObj.onreadystatechange = function(){
if(xhrObj.readyState == 4&&xhrObj.status==200){
var scriptElem = document.createElement("script");
document.getElementsByTagName("head")[0].appendChild(scriptElem);
scriptElem.text = xhrObj.responseText;
}
};
xhrObj.open("GET", "js/pop.js", true);
xhrObj.send("");
3.XHR Eval
顾名思义,通过XHR读取脚本,通过Eval令脚本生效。
var xhrObj = getxhr();
xhrObj.onreadystatechange = function(){
if(xhrObj.readyState == 4 && xhrObj.status==200){
eval(xhrObj.responseText);
}
};
function getxhr(){
var xhr=null;
if(window.
xhr=new
}
else{
xhr=new ActiveXObject("Microsoft.
}
return xhr;
}
xhrObj.open("GET", "js/pop.js", true);
xhrObj.send("");
4.Script Defer
原生方案。利用defer属性来防止脚本阻塞。
代码如下:
1 | <script defer src='/images/loading.gif' data-original="A.js"></script> |
defer是最简单的方法,现在主流的浏览器已经支持
原标题:无阻塞加载脚本的方案
关键词: