var JSLoader = function(){
var scripts = {}; // scripts['a.js'] = {loaded:false,funs:[]}
function getScript(url){
var script = scripts[url];
if (!script){
script = {loaded:false, funs:[]};
scripts[url] = script;
add(script, url);
}
return script;
}
function run(script){
var funs = script.funs,
len = funs.length,
i = 0;
for (; i<len; i++){
var fun = funs.pop();
fun();
}
}
function add(script, url){
var scriptdom = document.createElement('script');
scriptdom.type = 'text/javascript';
scriptdom.loaded = false;
scriptdom.src = url;
scriptdom.onload = function(){
scriptdom.loaded = true;
run(script);
scriptdom.onload = scriptdom.onreadystatechange = null;
};
//for ie
scriptdom.onreadystatechange = function(){
if ((scriptdom.readyState === 'loaded' ||
scriptdom.readyState === 'complete') && !scriptdom.loaded) {
run(script);
scriptdom.onload = scriptdom.onreadystatechange = null;
}
};
document.getElementsByTagName('head')[0].appendChild(scriptdom);
}
return {
load: function(url){
var arg = arguments,
len = arg.length,
i = 1,
script = getScript(url),
loaded = script.loaded;
for (; i<len; i++){
var fun = arg[i];
if (typeof fun === 'function'){
if (loaded) {
fun();
}else{
script.funs.push(fun);
}
}
}
}
};
}();
调用方法示例:
先在页面上加载JSLoader.js文件
然后执行
JSLoader.load('js/test.js' , function () {a();})
表示异步加载test.js文件,并且加载完成后再执行a()方法,a()方法是test.js里面的方法,a()方法就是负责渲染一些前端页面的网页效果来的。
不过该方法在ie7下并不会产生异步的效果,在ie7下需要使用延时触发器来包装一下,如:
setTimeout(" JSLoader.load('js/test.js' , function () {a();})", 1);
分享到:
相关推荐
当项目js(css)文件使用越来越多,js 文件的加载也成了性能上的一个问题,此资源能够在页面全部加载完成后异步加载js等资源文件,它可以顺序加载资源列表,也可以并发加载资源列表,它包含一个方法调用接口:...
JSP页面异步加载js文件,并可判断js加载完毕后调用所以方法,例与dojo进度条结合。
JS异步加载图片
本人手写的一款js树形控件,附带图片,代码简洁,注释齐全,可读性高,易于维护,方便移植,结构清晰,思路明了,界面美观,同时支持异步加载,对浏览器的兼容行强,你还可以根据自己的需要扩展功能,可大量应用于...
本文讲述了JS同步、异步、延迟加载的方法。分享给大家供大家参考,具体如下: 一:同步加载 我们平时使用的最多的一种方式。 [removed][removed] 同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析...
Echarts基础折线图源代码,对于数据源的读取有两种方式:直接定义数据源和异步加载数据,异步加载数据以读取json/js数据为主。
异步加载js
手机移动端Tab选项卡切换带下拉数据异步加载js插件下载。下拉或切换选项卡查看数据异步加载效果。
自己写的一个JS异步加载库,希望对大家有帮助
主要介绍了异步安全加载javascript文件的方法,实例分析了javascript实现文件异步加载的具体技巧,具有一定参考借鉴价值,需要的朋友可以参考下
使用Requirejs异步加载Dojo1.6,运行在Tomcat6下
C# winform简单易用的异步加载Loading效果.rarC# winform简单易用的异步加载Loading效果.rarC# winform简单易用的异步加载Loading效果.rarC# winform简单易用的异步加载Loading效果.rarC# winform简单易用的异步加载...
js加载的速度直接影响页面显示速度,此代码可减少页面打开时的空白时间
js 异步文件加载 异步JS文件加载
script.js:异步 JavaScript 加载器和依赖管理器
jquery异步加载页面,适合用于选项卡页面。
从Arr异步加载js和CSS文件 arr-css和js文件的数组 消息(необязательно)-加载资源后的传递消息。 deftype(необязательно)-资源的默认类型,如果扩展名不存在。 函数返回对象$ load...
lazyload.js实现图片异步延迟加载