zoukankan      html  css  js  c++  java
  • js文件动态添加的实现

    基于AMD和CMD的模块开发和按需加载,给我们的开发过程带来了便捷。

    今天就来就分享一个自己在项目开发中用到的一个按需加载js的一个方法,不多说,直接ps代码啦

    /**
     * JS 加载到顶部
     * @param {String} url
     * @param {Boolean} 请求并加载
     * @param {Function} fn
     * @return {Boolean}
     */
    function requireJs(url, multi, fn) {
        if (typeof multi == 'function') {
            var _temp = fn;
            fn = multi;
            multi = _temp;
        }
        var ss = document.getElementsByTagName('script');
        var loaded = false;
        for (var i = 0; i < ss.length; i++) {
            if (ss[i].src && ss[i].getAttribute('src') == url) {
                loaded = true;
                break;
            }
        }
        if (loaded) {
            if (fn && typeof fn != 'undefined' && fn instanceof Function){
                fn();
                return false;
            } 
        }
        var s = document.createElement('script'),
        b = false;
        s.setAttribute('type', 'text/javascript');
        if (multi) {
            this.loadJs = fn;
            var noArg = url.indexOf('?') == -1;
            s.setAttribute('src', url + (noArg?'?':'&') + 'callback=WYSIWYG.loadJs');
        } else {
            s.setAttribute('src', url);
            s.onload = s.onreadystatechange = function () {
                if (!b && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
                    b = true;
                    if (fn && typeof fn != 'undefined' && fn instanceof Function) fn();
                }
            };
        }
        document.getElementsByTagName('head')[0].appendChild(s);
    }

    该方法会检查页面是否已经引入了需要引入的js,如果没有,则加载该js,如果已经存在,则不加载;总之会在判断完成后在执行回调。

  • 相关阅读:
    洛谷 P3384 【模板】树链剖分
    codevs 4633 [Mz]树链剖分练习
    看一个人的回答有感(怎么判断数组中有没有未定义的值,如:[,,1,,3])
    bzoj2754: [SCOI2012]喵星球上的点名
    bzoj4456: [Zjoi2016]旅行者
    bzoj4574:Zjoi2016线段树 dp
    bzoj4455: [Zjoi2016]小星星
    bzoj4516: [Sdoi2016]生成魔咒
    uoj#207. 共价大爷游长沙
    bzoj4530:[Bjoi2014]大融合
  • 原文地址:https://www.cnblogs.com/oygg/p/5870916.html
Copyright © 2011-2022 走看看