无阻塞加载脚本的方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无阻塞加载脚本的方案相关的知识,希望对你有一定的参考价值。
1.动态加载脚本
<script type="text/javascript">
function loadScript(url){
var script=document.createElement("script");
script.type="text/javascript";
script.src=url;
document.body.appendChild(script);
}
loadScript("js/side-panel.js");
2.XHR Injection 使用动态创建script元素,来写入脚本,在某些情况下可能比上一种方法要快些。
/*var xhrObj = new XMLHttpRequest();
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.XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
xhr=new ActiveXObject("Microsoft.XMLHttp")
}
return xhr;
}
xhrObj.open("GET", "js/pop.js", true);
xhrObj.send("");
4.Script Defer
原生方案。利用defer属性来防止脚本阻塞。
代码如下:
1 |
<script defer src="A.js"></script> |
defer是最简单的方法,现在主流的浏览器已经支持
以上是关于无阻塞加载脚本的方案的主要内容,如果未能解决你的问题,请参考以下文章