异步加载js文件并执行js方法:实现异步处理网页的复杂效果(转)
2012-07-14 23:59
911 查看
有这么一个场景,当你的网页页面效果过多就会造成了打开页面的速度变得缓慢,长时间处于加载的状态,这样的效果通常会让用户感到不友好,通常的处理方法是先加载基本的html,然后再加载其他的网页效果,让用户感觉到页面一下子就出来了,然后其他的网页效果再慢慢的展现出来。这里通过JSLoader组件来实现这种前端的效果
调用方法示例:
先在页面上加载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);
varJSLoader=function(){ varscripts={};//scripts['a.js']={loaded:false,funs:[]} functiongetScript(url){ varscript=scripts[url]; if(!script){ script={loaded:false,funs:[]}; scripts[url]=script; add(script,url); } returnscript; } functionrun(script){ varfuns=script.funs, len=funs.length, i=0; for(;i<len;i++){ varfun=funs.pop(); fun(); } } functionadd(script,url){ varscriptdom=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; }; //forie 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){ vararg=arguments, len=arg.length, i=1, script=getScript(url), loaded=script.loaded; for(;i<len;i++){ varfun=arg[i]; if(typeoffun==='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文件并执行js方法:实现异步处理网页的复杂效果
- 异步加载js文件并执行js方法:实现异步处理网页的复杂效果
- 25.使用getScript()方法异步加载并执行js文件
- 【jQuery】使用getScript()方法异步加载并执行js文件
- 【AJAX】使用getScript()方法异步加载并执行js文件
- 原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
- 使用getScript()方法异步加载并执行js文件
- 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。
- 使用getScript()方法异步加载并执行js文件
- JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
- JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
- JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
- 实现异步加载js文件及加载完成后回调
- JS实现消息来时让网页标题闪动效果的方法
- JavaScript的执行原理,很多人都理解错了:在js被加载后,其实就将js代码执行了一遍,在内存中创建了所有js文件中的变量。而不是激发了某个js方法后,再去相应的js文件中去执行,是去内存中执行
- JS实现从网页顶部掉下弹出层效果的方法
- js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
- 通过JS和CSS,实现网页加载中的动画效果
- Asp.Net网页头部动态加载标题、描述、关键字、css和js文件的方法