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,如果已经存在,则不加载;总之会在判断完成后在执行回调。

  • 相关阅读:
    ArrayList源码解析
    Oracle WITH A AS 用法解析
    oracle关于时间分区的查询
    request.getRealPath("/")
    Oracle部分sql优化
    Java虚拟机
    java谜题-表达式谜题
    java和oracle简单的日期格式化
    java编译后在tomcat下无class文件
    JSP 中文乱码及其解决方案
  • 原文地址:https://www.cnblogs.com/oygg/p/5870916.html
Copyright © 2011-2022 走看看