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

  在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载。这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容。

  如何判断js是否加载完成?(实现loadScript(url,callback)异步加载脚本,完成后执行回调函数,要求支持IE)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>js判断异步引入的js文件是否加载完毕</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
</head>
<body>
<p onclick="loadScript(‘ocrad.js‘,null);">js如何判断异步引入的js文件是否加载完毕</p>

<script type="text/javascript">
    function loadScript(url,callback){
        //但是,这种加载方式在加载执行完之前会阻止 onload 事件的触发
        var _doc=document.getElementsByTagName(‘head‘)[0]; //获取head头部标签元素对象。
        var script=document.createElement(‘script‘);       //创建一个script标签元素。
    script.setAttribute(‘type‘,‘text/javascript‘);     //设置script标签的type属性。 script.type=‘text/javascript‘
    //script.async=‘async‘;
    script.setAttribute(‘src‘,url);                    //   script.src=url;
        script.setAttribute(‘async‘,‘true‘);
        _doc.appendChild(script);                          //将script标签附加到head标签中,否则只能够在IE11以下浏览器能够完成判断。
        script.onload=script.onreadystatechange=function(){
            if(!this.readyState||this.readyState==‘loaded‘||this.readyState==‘complete‘){
                console.log(‘js onload‘);
            }
            script.onload=script.onreadystatechange=null;     //删除事件处理函数。
        }
    }

    //解决了阻塞 onload 事件触发的问题 ,不是立即开始异步加载 js ,而是在 onload 时才开始异步加载。
    if (window.attachEvent)
         window.attachEvent(‘onload‘, function(){loadScript(‘ocrad.js‘,null);});
     else
         window.addEventListener(‘load‘, function(){loadScript(‘ocrad.js‘,null);}, false);</script>
</body>
</html>

相关链接:https://www.cnblogs.com/hq233/p/7102549.html

https://www.cnblogs.com/telnetzhang/p/5827791.html

原文地址:https://www.cnblogs.com/7qin/p/11116730.html

时间: 2024-12-12 03:12:24

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

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

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

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"><

善用js 异步引入,大幅提升vue站点加载速度,媲美大厂流畅性

相信很多同学都会遇见这样一个问题,vue,开发的网页一直转圈,Vue不好吗,不是,一个小知识点让你的Vue网页如丝滑般流畅. 我在学vue的第一节课,也就是入门课时,就被老师教导分模块,分组件,接下来看下模块与组件如何优化吧 首先从全局来看,多个网页的路由文件使用路由懒加载,这样: { path: 'index', name: 'index', meta: { title: '首页信息', }, component: () => import('@/views/home'), //()=> 后

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文件的访问路径.