使用动态脚本元素加载js
2016-08-19 15:22
218 查看
大概了解
这种技术通过动态创建<script>元素来加载js,重点在于无论何时启动下载,文件的下载和执行过程不会阻塞页面其他进程。
使用动态脚本元素下载文件时,返回的代码通常会立即执行(Firefox和Opera除外,它们等待此前所有动态脚本节点执行完毕)。在该脚本文件包含其他脚本调用的接口时,就会带来问题,所以你必须跟踪并确保脚本下载完成并准备就绪。
代码
<!doctype html> <head> <script> function loadJs(url,callback){ var script = document.createElement("script"); script.type = "text/javascript"; if(script.readyState){//IE触发事件,通常只检测两种值,loaded,complete script.onreadystatechange == function(){ if(script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null;//防止事件被处理两次 callback(); } } }else{//其他浏览器在<script>元素接受完成时触发load事件 script.onload = function() { callback(); } } script.src = url; document.getElementsByTagName('head')[0].appendChild(script); } loadJs("test1.js",function() { loadJs("test2.js",function() { alert("all js are loaded"); }) }) </script> </head> <body> <p>加载js</p> </body> </html>
上述代码会先加载test1.js,然后加载test2.js。如果多个js下载顺序很重要,更好的做法是将他们按正确的顺序合并成一个文件。
小结(核心)
减少js对性能的影响,有如下方法</body>闭合标签之前,将所有
<script>放在页面底部,确保脚本执行前页面完成渲染
合并脚本,
<script>越少,加载越快
使用动态脚本元素加载js
使用
<script>标签的defer属性(仅适用于IE和Firefox3.5+)
使用xhr对象加载js并注入页面
相关文章推荐
- 使用jQuery动态加载js脚本文件的方法
- 使用jQuery动态加载js脚本文件的方法
- 使用jQuery动态加载js脚本文件的方法
- 使用jQuery动态加载js脚本文件的方法
- 动态加载JS脚本的4种方法
- JS 动态增删元素 自定义验证控件的使用
- ASP.NET使用母版页后动态加载JS/CSS
- 使用JS动态在页面加载CSS文件
- 动态加载JS脚本的4种方法
- 动态加载Js代码到Head标签中的脚本
- asp.net在使用母版页的内容页面中动态加载css和js文件的方法
- 动态加载JS脚本的4种方法[转自http://hi.baidu.com/ajax] http://www.cnitblog.com/yemoo/archive/2007/07/19/30222.html
- 要实现动态加载JS脚本有4种方法:
- 【转】js动态加载脚本
- 动态加载js文件以支持跨域脚本
- 动态加载JS脚本的4种方法
- javascript中动态加载js、vbs脚本或者css样式表
- 使用AJAX动态加栽JS脚本和CSS样式
- 使用ExtJs开发MIS系统(2):Js的动态加载
- 动态加载JS脚本的4种方法