js动态加载script文件

HTML5 herman 1692浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

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

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » js动态加载script文件