异步加载js文件并执行js方法:实现异步处理网页的复杂效果
2011-08-31 12:48
1106 查看
有这么一个场景,当你的网页页面效果过多就会造成了打开页面的速度变得缓慢,长时间处于加载的状态,这样的效果通常会让用户感到不友好,通常的处理方法是先加载基本的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);
这里通过JSLoader组件来实现这种前端的效果
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文件并执行js方法:实现异步处理网页的复杂效果(转)
- 异步加载js文件并执行js方法:实现异步处理网页的复杂效果
- 【AJAX】使用getScript()方法异步加载并执行js文件
- 原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
- 使用getScript()方法异步加载并执行js文件
- 使用getScript()方法异步加载并执行js文件
- 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。
- 25.使用getScript()方法异步加载并执行js文件
- 【jQuery】使用getScript()方法异步加载并执行js文件
- 异步加载js文件的方法总结
- JavaScript实现当网页加载完成后执行指定函数的方法
- jquery及js实现动态加载js文件的方法
- 用js实现在加载完成一个页面后自动执行一个方法
- js实现横向百叶窗效果网页切换动画效果的方法
- 实现在html页面加载之前执行js方法
- 利用jQuery的deferred对象实现异步按顺序加载JS文件
- 用js实现在加载完成一个页面后自动执行一个方法
- Ajax客户端异步调用服务端的实现方法(js调用cs文件)
- jquery及js实现动态加载js文件的方法
- 实现在HTML页面加载完毕后执行某个JS的两种方法