我们经常使用动态加载Javascript,写个函数很容易现实,之前也写过一个函数,不过当加载多个JS时,只能根据浏览器返回的顺序来先后加载,这肯定不是我们想要的,现在使用了一下技巧,当加载多个JS时,能按照我们的顺序加载:

  1. /*
  2. Name:动态加载JS
  3. Author:kingwell Leng
  4. Date : 2013/4/21
  5. E-mail: jinhua.leng##gmail.com
  6. */
  7. function getScript(obj, callback) {
  8. var arr = obj,
  9. timeout,
  10. str = typeof obj === 'string';
  11. function add() {
  12. var script = document.createElement("script");
  13. header = document.getElementsByTagName("head")[0];
  14. script.src = str ? obj : arr[0];
  15. script.type = "text/javascript";
  16. if (str) {
  17. if (script.readyState) {
  18. script.onreadystatechange = function () {
  19. if (script.readyState === 'loaded' || script.readyState === 'complete') {
  20. script.onreadystatechange = null;
  21. callback && callback();
  22. }
  23. };
  24. } else {
  25. script.onload = function () {
  26. callback && callback();
  27. };
  28. }
  29. } else {
  30. if (arr.length >= 1) {
  31. if (script.readyState) {
  32. script.onreadystatechange = function () {
  33. if (script.readyState === 'loaded' || script.readyState === 'complete') {
  34. script.onreadystatechange = null;
  35. arr.shift();
  36. timeout = setTimeout(add, 1);
  37. }
  38. };
  39. } else {
  40. script.onload = function () {
  41. arr.shift();
  42. timeout = setTimeout(add, 1);
  43. };
  44. }
  45. } else {
  46. clearTimeout(timeout);
  47. callback && callback();
  48. }
  49. }
  50. header.appendChild(script);
  51. }
  52. add();
  53. }
  1. /*
  2. Name:动态加载JS
  3. Author:kingwell Leng
  4. Date : 2013/4/21
  5. E-mail: jinhua.leng##gmail.com
  6.  
  7. */
  8. function getScript(obj, callback) {
  9. var arr = obj,
  10. timeout,
  11. str = typeof obj === 'string';
  12. function add() {
  13. var script = document.createElement("script");
  14. header = document.getElementsByTagName("head")[0];
  15. script.src = str ? obj : arr[0];
  16. script.type = "text/javascript";
  17. if (str) {
  18. if (script.readyState) {
  19. script.onreadystatechange = function () {
  20. if (script.readyState === 'loaded' || script.readyState === 'complete') {
  21. script.onreadystatechange = null;
  22. callback && callback();
  23. }
  24. };
  25. } else {
  26. script.onload = function () {
  27. callback && callback();
  28. };
  29. }
  30. } else {
  31. if (arr.length >= 1) {
  32. if (script.readyState) {
  33. script.onreadystatechange = function () {
  34. if (script.readyState === 'loaded' || script.readyState === 'complete') {
  35. script.onreadystatechange = null;
  36. arr.shift();
  37. timeout = setTimeout(add, 1);
  38. }
  39. };
  40. } else {
  41. script.onload = function () {
  42. arr.shift();
  43. timeout = setTimeout(add, 1);
  44. };
  45. }
  46. } else {
  47. clearTimeout(timeout);
  48. callback && callback();
  49. }
  50. }
  51. header.appendChild(script);
  52. }
  53. add();
  54. }

调用:

  1. getScript(['http://code.jquery.com/jquery-1.9.1.min.js','js1.js', 'js2.js', 'js3.js', 'js4.js'], function () {
  2. alert('我是按顺序加载啦');
  3. });
  1. getScript(['http://code.jquery.com/jquery-1.9.1.min.js','js1.js', 'js2.js', 'js3.js', 'js4.js'], function () {
  2. alert('我是按顺序加载啦');
  3. });

现在是按照我们写代码的顺序加载啦...

动态加载javascript增强版的更多相关文章

  1. 两种动态加载JavaScript文件的方法

    两种动态加载JavaScript文件的方法 第一种便是利用ajax方式,第二种是,动静创建一个script标签,配置其src属性,经过把script标签拔出到页面head来加载js,感乐趣的网友可以看 ...

  2. 网页特效-动态加载JavaScript

    描述: 把一些逻辑独立的JavaScript脚本文件单独加载,是一种常见的JavaScript动态加载技术.可以减少不必要的JavaScript脚本文件的加载,以提高网页浏览速度 代码: <!D ...

  3. Ext JS 如何动态加载JavaScript创建窗体

    JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS ...

  4. [转]动态加载javascript

    动态加载script到页面大约有俩方法 第一种就是利用ajax方式,把script文件代码从后台加载到前台,然后对加载到的内容通过eval()执行代码. 第二种是,动态创建一个script标签,设置其 ...

  5. javascript 动态加载javascript文件

    /* loadFile(data, callback): 动态加载js文件 data: 存放需要加载的js文件的url("url" || ["url", &qu ...

  6. 对动态加载javascript脚本的研究

    有时我们需要在javascript脚本中创建js文件,那么在javascript脚本中创建的js文件又是如何执行的呢?和我们直接在HTML页面种写一个script标签的效果是一样的吗?(关于页面scr ...

  7. 使用jQuery动态加载js脚本

    动态加载Javascript是一项非常强大且有用的技术.这方面的主题在本站已经讨论了不少,我也经常会在一些个人项目上使用RequireJS和Dojo加载js.它们很强大,但有时候也会得不偿失.如果你使 ...

  8. 使用jQuery动态加载js脚本文件的方法

    动态加载Javascript是一项非常强大且有用的技术.这方面的主题在网上已经讨论了不少,我也经常会在一些个人项目上使用RequireJS和Dojo加载js 它们很强大,但有时候也会得不偿失.如果你使 ...

  9. jQuery动态加载JS以减少服务器压力

    如果您要创建一个web2.0的应用程序,那么你的网页会包括大量的JavaScript文件,这些可能会拖慢您的网页.因此,动态加载JavaScript代码到您的网页是一个好主意,即只有当实用他们的时候加 ...

随机推荐

  1. 在第一段ionic示例的基础上增加底部导航

    demo2.html <!DOCTYPE html> <html ng-app="app"> <head> <meta charset=& ...

  2. 根据wsdl文件生成java代码

    具体操作步骤: 1.  运行cmd命令 输入 C:\jdk-1_6_0_31\bin (根据自己的JDK的安装位置而定) 2.  新建gen.bat文件 3.  gen.bat文件内容为:wsimpo ...

  3. 解压zip,解决中文乱码

    Project p = new Project();        Expand e = new Expand();        e.setProject(p);        e.setSrc(f ...

  4. 在MVC的cshtml视图页获取默认路由下的ID值的方法

    <a href="/user/resume/index/11"> <span class="title bold">我的 @Reques ...

  5. java 泛型--桥方法

    因为 java 在编译源码时, 会进行 类型擦除, 导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性, 编译器会生成 桥方法. 本文最后附录所有源码. P ...

  6. ffmpeg Win8移植记(一)

    最近和同事一起合作,移植ffmepg到Win8平台上. Windows Store 要求3个架构X86 X64 ARM, 我们主要做的就是X86和ARM的平台, X86的平台移植的文章已经很多了.我推 ...

  7. putty(winscp)无法连接到linux(ubuntu)

    为了能在自己笔记本电脑上兼容公司的用64位系统编译出来的MapReduce程序,我把自己原来32位的ubuntu虚拟机删除后,安装了目前最新的ubuntu-14.04.2-desktop-amd64. ...

  8. 查看80port是否被占用

    windows下命令: netstat -ano|findstr "0.0:80"

  9. 聊聊iClient for Leaflet坐标转换问题

    作者:非法小恋 背景 SuperMap iClient for JavaScript 9D产品想必大伙都用了一段时间了,针对新推出的三款客户端产品,Leaflet,OpenLayaers,Mapbox ...

  10. mark v1 SecurityConfig

    package cn.efunbox.cms.configuration; import cn.efunbox.afw.core.entity.ApiCode; import cn.efunbox.a ...