在很多时候我们都会用到动态加载js文件的功能。比如我的博客在首页中不需要加载第三方的多说评论插件,而在文章页则需要加载。再比如在文章页会加载打赏插件功能等等,都使用的是动态加载script文件的功能。
可见动态加载js在工作中是非常常见的功能,它能极大的提升我们网站的性能和响应速度。目前也有一些主流的框架采用动态加载js的做法,如RequireJS和Dojo加载js,AngularJS,Extjs等。那么它们是如何做的呢?
通常有4中方法来实现动态加载js脚本(前3中都是异步的):
1、直接document.write
<script language="javascript">
document.write("<script src='xttblog.js'></script>");
</script>
2、动态改变已有script的src属性
<script src='' id="xttblog"></script> <script language="javascript"> xttblog.src="xttblog.js" </script>
3、动态创建script元素
<script>
var head = document.getElementsByTagName('HEAD').item(0),
script= document.createElement("script");
script.type = "text/javascript";
script.src="xttblog.js";
head.appendChild( script);
</script>
4、原理:用 XMLHTTP 取得要脚本的内容,再创建 Script 对象。
这种做法太复杂,我推荐大家使用jQuery框架的功能来加载。如下:
jQuery.getScript("/path/xttblog.js",
function(data, status, jqxhr) {
/*
*做一些加载完成后需要执行的事情
*当加载完成后你可以在回调函数里执行后续操作
*/
}
);
jQuery.ajax({
url: "/path/xttblog.js",
dataType: "script",
cache: true //进行缓存
}).done(function() {
/*加载成功回调函数*/
}).fail(function() {
/*加载失败回调函数*/
};
如果你不想使用缓存,可以设置cache:false,或者在url上加时间戳。
原文地址:http://www.xttblog.com/?p=384

: » js动态加载script文件
原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/251131.html