异步加载js文件并执行js方法:实现异步处理网页的复杂效果
2011-08-31 12:48
1011 查看
有这么一个场景,当你的网页页面效果过多就会造成了打开页面的速度变得缓慢,长时间处于加载的状态,这样的效果通常会让用户感到不友好,通常的处理方法是先加载基本的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组件来实现这种前端的效果
using System; class XXTEA { public static Byte[] Encrypt(Byte[] Data, Byte[] Key) { if (Data.Length == 0) { return Data; } return ToByteArray(Encrypt(ToUInt32Array(Data, true), ToUInt32Array(Key, false)), false); } public static Byte[] Decrypt(Byte[] Data, Byte[] Key) { if (Data.Length == 0) { return Data; } return ToByteArray(Decrypt(ToUInt32Array(Data, false), ToUInt32Array(Key, false)), true); } public static UInt32[] Encrypt(UInt32[] v, UInt32[] k) { Int32 n = v.Length - 1; if (n < 1) { return v; } if (k.Length < 4) { UInt32[] Key = new UInt32[4]; k.CopyTo(Key, 0); k = Key; } UInt32 z = v , y = v[0], delta = 0x9E3779B9, sum = 0, e; Int32 p, q = 6 + 52 / (n + 1); while (q-- > 0) { sum = unchecked(sum + delta); e = sum >> 2 & 3; for (p = 0; p < n; p++) { y = v[p + 1]; z = unchecked(v[p] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)); } y = v[0]; z = unchecked(v += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)); } return v; } public static UInt32[] Decrypt(UInt32[] v, UInt32[] k) { Int32 n = v.Length - 1; if (n < 1) { return v; } if (k.Length < 4) { UInt32[] Key = new UInt32[4]; k.CopyTo(Key, 0); k = Key; } UInt32 z = v , y = v[0], delta = 0x9E3779B9, sum, e; Int32 p, q = 6 + 52 / (n + 1); sum = unchecked((UInt32)(q * delta)); while (sum != 0) { e = sum >> 2 & 3; for (p = n; p > 0; p--) { z = v[p - 1]; y = unchecked(v[p] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)); } z = v ; y = unchecked(v[0] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)); sum = unchecked(sum - delta); } return v; } private static UInt32[] ToUInt32Array(Byte[] Data, Boolean IncludeLength) { Int32 n = (((Data.Length & 3) == 0) ? (Data.Length >> 2) : ((Data.Length >> 2) + 1)); UInt32[] Result; if (IncludeLength) { Result = new UInt32[n + 1]; Result = (UInt32)Data.Length; } else { Result = new UInt32 ; } n = Data.Length; for (Int32 i = 0; i < n; i++) { Result[i >> 2] |= (UInt32)Data[i] << ((i & 3) << 3); } return Result; } private static Byte[] ToByteArray(UInt32[] Data, Boolean IncludeLength) { Int32 n; if (IncludeLength) { n = (Int32)Data[Data.Length - 1]; } else { n = Data.Length << 2; } Byte[] Result = new Byte ; for (Int32 i = 0; i < n; i++) { Result[i] = (Byte)(Data[i >> 2] >> ((i & 3) << 3)); } return Result; } }
调用方法示例:
先在页面上加载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的两种方法