美文网首页
Web动态加载js

Web动态加载js

作者: cheek | 来源:发表于2016-03-30 14:49 被阅读106次

很多时候在一个页面中某个操作需要用到一个js库,但这个操作也不经常用,所以并不想在该页面一开始就加载这个js库,只有当操作时才动态加载进来。

由于浏览器(DOM)对象允许javascript动态创建任何HTML内容,并自动根据链接下载内容,像<img src="..." />``<script src="...">等,所以只需向DOM中添加<script>内容就好了,关键在于怎样知道浏览器什么时候加载完js,不然我们依赖该js的代码就会出错,

Chrome/Firefox/safari/IE11 等在<script>内容加载完后会有一个load事件,我们可监听这一事来完成需要的相关操作

var script = document.createElement("script");
script.onload = function(){
    ///加载完成
}
script.src = "file.js";
document.getElementByTagName("head")[0].appendChild(script);

而IE11以下版本就不支持此事件,但会有一个readystatechange事件:

script.readystatechange = function(){
    if( script.readyState == "loaded" || script.readyState == "complete" ){
        ///加载完成
    }
}

下面来封装下,以方便调用:

function loadScript(url, callback){
    var script = document.createElement ("script")
    script.type = "text/javascript";
    if (script.readyState){ //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" || script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else { //Others
        script.onload = function(){
            callback();
        };
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

现在就可以当点击时再加载所需js库,但当重复点击时,就会重复加载,所以我们还需要一个变量记录已动态加载的js,以防止重复加载

相关文章

  • Web动态加载js

    很多时候在一个页面中某个操作需要用到一个js库,但这个操作也不经常用,所以并不想在该页面一开始就加载这个js库,只...

  • JavaScript动态加载js和css

    动态加载js 参考:javascript 性能优化 动态加载css 参考: 动态加载 css 方法实现和深入解析 ...

  • js动态加载HTML元素时点击事件无效

    js动态加载HTML元素时点击事件无效: 是因为这些动态加载的这些HTML,是在css,js代码加载完后,再添加的...

  • 浏览器性能提升--js加载优化

    动态加载js脚本函数封装优点:js代码加载不阻塞浏览器其他的执行

  • UIWebView属性及方法

    UIWebView代理 UIWebView代理方方法 web请求数据及加载数据 web执行JS代码(OC调用JS的...

  • JS-动态加载js

    /** * 动态加载js文件 * @param {string} url js文件的url地址 * @par...

  • 如何动态加载js?

    如何动态加载js?如何使用js实现多个html页面访问同一个常量?如何不使用框架,只有Html时,动态加载文件? ...

  • 动态加载JS文件

    根据不同状态动态加载js。很像原生的AJAX

  • 前端动态加载JS

    最近机顶盒遇到一种特殊场景需要按需加载js,所以特此记录动态加载JS的方法这个方法加载的是本地的js,如果要加载非...

  • iOS | WKWebView 动态加载本地JS库文件

    需求: 如果需要在WKWebView加载JS库,或者JS文件,有以下2种方案: 方式一. 可以在 web 页面加载...

网友评论

      本文标题:Web动态加载js

      本文链接:https://www.haomeiwen.com/subject/lntelttx.html