在很多时候我们都会用到动态加载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/251131.html