js如何判断引入的js文件是否加载完毕

js如何判断引入的js文件是否加载完毕:
如果javascript代码较少的话完全可以将js代码通过<script></script>标签写在当前页面,但是如果js代码非常庞大的话,那么页面将会变得非常的臃肿,并且由于js代码是同步加载,所以当js代码加载的时候,会阻塞下面内容的解析,所以最好能够动态加载js功能,尤其是能够实现根据需要动态引入外部js文件。由于动态加载js文件是异步的,所以有时候需要判断js文件是否加载完毕,下面就通过代码介绍一下如何实现判断功能。
代码如下:

function dynamicLoad(){
  var _doc=document.getElementsByTagName(‘head‘)[0];
  var script=document.createElement(‘script‘);
  script.setAttribute(‘type‘,‘text/javascript‘);
  script.setAttribute(‘src‘,‘jquery-1.8.3.js‘);
  _doc.appendChild(script);
  script.onload=script.onreadystatechange=function(){
    if(!this.readyState||this.readyState==‘loaded‘||this.readyState==‘complete‘){
      alert(‘done‘);
    }
    script.onload=script.onreadystatechange=null;
  }
}

上面你的代码实现了js文件加载是否完成的功能,下面介绍一下它的实现过程。
一.代码注释:
1.function dynamicLoad(){},此函数实现判断指定文件是否加载完毕的功能。
2.var _doc=document.getElementsByTagName(‘head‘)[0],获取head头部标签元素对象。
3.var script=document.createElement(‘script‘),创建一个script标签元素。
4.script.setAttribute(‘type‘,‘text/javascript‘),设置script标签的type属性。
5.script.setAttribute(‘src‘,‘jquery-1.8.3.js‘),设置script标签的src属性值,也就是要加载js文件的路径。
6._doc.appendChild(script),将script标签附加到head标签中,否则只能够在IE11以下浏览器能够完成判断。
7.script.onload=script.onreadystatechange=function(){
   if(!his.readyState||this.readyState==‘loaded‘||this.readyState==‘complete‘){
     alert(‘done‘);
   }
   script.onload=script.onreadystatechange=null;
}
上面你的代码的分析可以参阅script.onload=script.onreadystatechange=function()的作用一章节。
8.script.onload=script.onreadystatechange=null,删除事件处理函数。
二.相关阅读:
1.getElementsByTagName()函数可以参阅document.getElementsByTagName()一章节。
2.createElement()函数可以参阅js的createElement()和appendChild()函数的作用一章节。
3.setAttribute()函数可以参阅setAttribute()函数的用法详解一章节。

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=14775

时间: 2024-08-26 19:28:21

js如何判断引入的js文件是否加载完毕的相关文章

js判断异步引入的js文件是否加载完毕

在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载.这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容. 如何判断js是否加载完成?(实现loadScript(url,callback)异步加载脚本,完成后执行回调函数,要求支持IE) <!DOCTYPE html> <html> <head> <meta charset="

1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器

1 //引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js"></script> //引入 jQuery EasyUI 核心库,这里采用的是 1.3.6 <scripttype="text/javascript"src="easyui/jquery.easyui.min.js"><

如何判断一个div中images全部加载完毕

<div id="container1"> <img src="1.jpg" /> <img src="2.jpg" /> <img src="3.jpg" /> <img src="4.jpg" /> <img src="5.jpg" /> </div> ------------------------

QML中文件的加载(三种方法)

在这里小小总结一下QML文件中如何加载QML文件与JavaScript文件. 1.QML文件中加载JavaScript文件 语法: import <ModuleIdentifier> <Version.Number> [as <Qualiflier>] ModuleIdentifier为URL: Version.Number为版本号: Qualifier为自定义命名: 示例代码如下: Qml文件: 图一 Js文件 图二 注:将js文件引入后可直接调用里面的函数,自定义命

实现异步加载js文件及加载完成后回调

模块化工具类实现方式 基于AMD.CMD模式的JS模块化管理工具越来越流行,这些工具通常只需在页面中加载对应的工具JS,其他JS文件都是异步加载的,比如RequireJS就可以象下面这样做. 首先在页面加载 <script data-main="scripts/main.js" src="scripts/require.js"></script> 然后工具会自动识别data-main属性值,并加载对应的JS文件,在main.js可以加载更多模

js文件最后加载(在window.load事件发生后再加载js文件),用于解决因jQuery等js库导致网页加载慢的问题

需引入文件:lazyload-min.js <script src="JS/lazyload-min.js" type="text/javascript"></script> 插入代码: function loadscript() { LazyLoad.loadOnce([ 'JS/touch.js', 'http://libs.baidu.com/jquery/1.2.3/jquery.min.js' ], loadComplete); }

Eclipse中使用Tomcat加载项目在浏览器中访问的时候JS和CSS等静态文件无法加载的问题

首先,我的Eclipse是引用外部的Tomcat 引用外部Tomcat会在左侧生成一个Server文件夹,相当于复制了一份Tomcat到Eclipse的安装目录里 具体Tomcat所在目录可以在这进行查看 双击Tomcat服务,会打开一个窗口,然后点击Open launch configuration,可打开配置窗口,在这里可以查看到具体服务所在位置. 接下来步入正题,正如题目所说,Eclipse中使用Tomcat加载项目在浏览器中访问的时候JS和CSS等静态文件无法加载,如图 仔细看下路径,会

在HTML文件中加载js

js加载只分为两种: 1.全局js,放在<head>标签里面,整个页面很多都用到的,它是优先加载的. 2.局部js,放在</html>结束标签以内的任何位置,它是第二加载的. 在HTML文件中加载js,布布扣,bubuko.com

nginx设置反向代理后,页面上的js css文件无法加载

问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2)域名访问:js css文件无法加载: (3)IP访问:js css文件可以正常加载: 解决方法: nginx配置文件中,增加如下配置: location ~ .*\.(js|css)$ { proxy_pass http://127.0.0.1:8866; } 原因分析: 反向代理的路径下找不到文件,需要单独指定js css文件的访问路径.