js加载之使用DOM方法动态加载Javascript文件


Posted in Javascript onNovember 08, 2013

传统上,加载Javascript文件都是使用<script>标签。
就像下面这样:
<script type="text/javascript" src="example.js"></script>
js加载之使用DOM方法动态加载Javascript文件 
<script>标签很方便,只要加入网页,浏览器就会读取并运行。但是,它存在一些严重的缺陷。

(1)严格的读取顺序。由于浏览器按照<script>在网页中出现的顺序,读取Javascript文件,然后立即运行,导致在多个文件互相依赖的情况下,依赖性最小的文件必须放在最前面,依赖性最大的文件必须放在最后面,否则代码会报错。

(2)性能问题。浏览器采用"同步模式"加载<script>标签,也就是说,页面会"堵塞"(blocking),等待javascript文件加载完成,然后再运行后面的HTML代码。当存在多个<script>标签时,浏览器无法同时读取,必须读取完一个再去读取另一个,造成读取时间大大延长,页面响应缓慢。
为了解决这些问题,可以使用DOM方法,动态加载Javascript文件。

function loadScript(url){ 


var script = document.createElement("script"); 


script.type = "text/javascript"; 


script.src = url; 


document.body.appendChild(script); 

}

这样做的原理是,浏览器即时创造出一个<script>标签,然后"异步"读取Javascript文件。这样不会造成页面堵塞,但会造成另外一个问题:这样加载的Javascript文件,不在原始的DOM结构之中,因此在DOM-ready(DOMContentLoaded)事件和window.onload事件中指定的回调函数对它无效。
Javascript 相关文章推荐
js 自定义个性下拉选择框示例
Aug 20 Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
node.js中的fs.lchmodSync方法使用说明
Dec 16 Javascript
jQuery中animate动画第二次点击事件没反应
May 07 Javascript
javascript运动详解
Jul 06 Javascript
轻松实现js弹框显示选项
Sep 13 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
Dec 08 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
Jan 20 Javascript
vue axios 表单提交上传图片的实例
Mar 16 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
javascript获取url上某个参数的方法
Nov 08 #Javascript
jqgrid 编辑添加功能详细解析
Nov 08 #Javascript
动态加载JS文件的三种方法
Nov 08 #Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
Nov 08 #Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 #Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
Nov 08 #Javascript
JavaScript中this的使用详解
Nov 08 #Javascript
You might like
php Xdebug的安装与使用详解
2013/06/20 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
javascript this用法小结
2008/12/19 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
Python set集合类型操作总结
2014/11/07 Python
多个应用共存的Django配置方法
2018/05/30 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
会议邀请书范文
2014/02/02 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
法制宣传标语
2014/06/23 职场文书