关于动态加载js
已知一个需要动态加载的js的文件路径数组,动态加载数组里面所有的js文件。
加载分两种情况:
1. 并行加载,不管js的执行顺序。
2. 串行加载,即一个一个加载,上一个加载完再加载下一个,直到最后。
动态加载js一般都是动态创建一个script,
解决第一种情况:
function loadExternalFile(src,parentElement,tagName){
var elem = document.createElement(tagName);
if(tagName==='link'){
elem.setAttribute('href',src);
elem.setAttribute('rel','stylesheet');
}else if(tagName==='script'){
elem.setAttribute('src',src);
elem.setAttribute('type','text/javascript');
}
parentElement.appendChild(elem);
}
解决第二种情况:
function loadScript(url, parentEle, tagName, callback){
var ele = document.createElement(tagName);
var typeProp = tagName==='script'?'type':'rel';
ele[typeProp] = tagName==='script'?'text/javascript':'stylesheet';
if (ele.readyState){ //IE
ele.onreadystatechange = function(){
if (ele.readyState == "loaded" ||
ele.readyState == "complete"){
ele.onreadystatechange = null;
callback();
}
};
} else { //Others
ele.onload = function(){
callback();
};
}
typeProp = tagName==='script'?'src':'href';
ele[typeProp] = url;
parentEle.appendChild(ele);
}
第一种情况用法非常简单就不说了。
第二种用法其实也不难:
假设:scripts数组:['a.js','b.js','c.js']
var i=0;
var n=scripts.length;
loadScript(scripts[i],parentEle,'script',loadScriptComplete); function loadScriptComplete(){
i++;
if(i<n){
loadScript(scripts[i],parentEle,'script',loadScriptComplete);
}
}
上面的两种方法其实也适用于加载css文件。
关于动态加载js的更多相关文章
- 动态加载js和css
开发过程中经常需要动态加载js和css,今天特意总结了一下常用的方法. 1.动态加载js 方法一:动态加载js文件 // 动态加载js脚本文件 function loadScript(url) { v ...
- 动态加载js文件
由于最近在弄echarts,关于地图类的效果,但是全国地图整体的js文件太大了,加载很耗费资源,所以要根据不同省份加载不同地区的js地图, 于是就想的比较简单, var script = docume ...
- 动态加载js,css
今天项目中需要用到动态加载 CSS 文件,经过一番折腾终于搞定,回家整理了一下,顺便融合了动态加载 JS 的功能写成了一个对象,先上代码: var dynamicLoading = { css: fu ...
- 动态加载JS脚本的4种方法
实现OPOA(One Page One Application)时,必须使用动态加载js. 也就是在用户选择某个菜单项后,再动态加载对应的全部js到客户端. 动态加载js的情况很多啊,比如解决ajax ...
- 动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数
动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数, 在很多场景下,我们需要在动态加载JS文件的时候,根据加载的状态来进行后续的操作,需要在JS加载成功后,执行另一方法,这个方法是依托在加 ...
- JS动态加载 js css
1.动态加载js function loadScript( url ){ var script = document.createElement( "script" ); scri ...
- 动态加载JS过程中如何判断JS加载完成
在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析.这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内 ...
- ExtJS4.x动态加载js文件
动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...
- 动态加载 js
要实现动态加载JS脚本有4种方法: 1.直接document.write <script language="javascript"> document.write(& ...
- Ext JS学习第十天 Ext基础之动态加载JS文件(补充)
此文用来记录学习笔记: •Ext4.x版本提供的一大亮点就是Ext.Loader这个类的动态加载机制!只要遵循路径规范,即可动态加载js文件,方便把自己扩展组件动态加载进来,并且减轻浏览器的压力. • ...
随机推荐
- 【nodejs】文件上传demo实现
文件结构: index.js var server = require('./server.js'); var router = require('./router.js'); var request ...
- Java之装饰模式
1.装饰模式的理解 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 2.装饰模式由4种角色组成 (1)抽象构件(Componen ...
- 第一个WCF程序
WCF的服务需要寄宿在进程中,我们把服务端的叫做宿主,为服务指定宿主指定的过程叫服务寄宿.有两种方式一种是自我寄宿(Self-Hosting),一种是IIS寄宿方式.Self-Hosting我们通过一 ...
- spring boot 与 thymeleaf (2): 常用表达式
在asp.net mvc 中, 有一个视图解析器, 可以支持Razor语法. 使用起来, 是非常的方便, 并且, 写在前台页面的后台方法, 是可调试的. 但是在java中, 目前我还没有接触到, 像. ...
- Undo日志文件的产生和使用
Undo 日志 比如A有200块钱, B有50 块钱,现在A要给B转100块” . (1) 开始事务 T1 (假设T1是个事务的内部编号) (2) A余额 = A余额 -100 (3) B余额 ...
- OSI与TCP/IP模型
1 OSI参考模型 谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考.在现实网络世界里,T ...
- 图解RAID 0, RAID 1, RAID 5, RAID 10
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...
- 【PyTorch深度学习60分钟快速入门 】Part0:系列介绍
说明:本系列教程翻译自PyTorch官方教程<Deep Learning with PyTorch: A 60 Minute Blitz>,基于PyTorch 0.3.0.post4 ...
- nginx报错整理
一. 1.线上有个域名出现一个访问报错: 413 Payload Too Large 这里贴一下关于这个报错的解释: The 413 (Payload Too Large) status code i ...
- java json-lib配置
用法 项目中要用到json-lib,mvnrepository.com查找它的dependency时结果如下: import net.sf.json.JSONArray; import net.sf. ...