javascript中动态加载js文件多种解决办法总结


Posted in Javascript onNovember 15, 2013

一个比较全部在动态加方法

/*
    动态加载js v1.0 by:dum 
    用法:src="webJsBase.js?load=a,b"
    注:加载本目录下js
*/
var webJsBase = {
    require: function(libraryName) {
        document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
    },
    load: function(defaultLoad) {
        if((typeof Prototype=='undefined')||(typeof Element == 'undefined')||(typeof Element.Methods=='undefined'))
        throw ('prototype lib 加载失败!');
        if(typeof defaultLoad=='undefined')defaultLoad='';
        var js = /webJsBase.js(?.*)?$/;
        $$('head script[src]').findAll(function(s) {
            return s.src.match(js);
        }).each(function(s) {
            var path = s.src.replace(js, '');
            var includes = s.src.match(/?.*load=([a-zA-Z0-9_,]*)/);
            (includes ? includes[1] : defaultLoad).split(',').each(function(include) {
                webJsBase.require(path + include + '.js');
            });
        });
    }
};
webJsBase.load(); //这里参数可以指定默认要加载的js文件

这是最简单的方法在加载完后再利用直接document.write 如下图。

<script language="javascript">
    document.write("<script src='test.js'></script>");
</script>

给script加个id再去动态改变已有script的src 属性

<script src='' id="s1"></script>
<script language="javascript">
    s1.src="test.js"
</script>

这里利用getElementsByTagName('HEAD')动态创建 script元素

<script>
    var oHead = document.getElementsByTagName('HEAD').item(0);
    var oScript= document.createElement("script");
    oScript.type = "text/javascript";
    oScript.src="test.js";
    oHead.appendChild( oScript);
</script>

还可以这样尝试一下,自定一个函数

function include(src) {
HTMLCode = '<script language="javascript" src="' + src + '"></script>';
document.write(HTMLCode);
}

调用方法,这样看上去就你php的include函数了
include(baseDir + "/Prototype.js");
include(baseDir + "/Map.js");
include(baseDir + "/MapEvent.js");
include(baseDir + "/model/MapModel.js");
include(baseDir + "/model/MapType.js");
include(baseDir + "/model/Tile.js");

还有朋友说可以使用ExtJs4 动态加载js这里我就不介绍了,上面的方法足够让你实现动态加载js了.

所以在采用这类方法动态加载Js 的同时,主界面的Js脚本是继续执行的,所以可能出现通过异步加载的Js代码得不到预期的效果的情况。

这时候可以考虑采用Ajax加载Js的方法。

Javascript 相关文章推荐
javascript之Partial Application学习
Jan 10 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
Feb 26 Javascript
简单实现JS计算器功能
Dec 21 Javascript
Bootstrap 3 按钮标签实例代码
Feb 21 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
详解angularjs 学习之 scope作用域
Jan 15 Javascript
Vue组件中slot的用法
Jan 30 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
Sep 14 Javascript
详解wepy开发小程序踩过的坑(小结)
May 22 Javascript
vue中进行微博分享的实例讲解
Oct 14 Javascript
浅谈Web Storage API的使用
Jun 23 Javascript
JavaScript设计模式之原型模式详情
Jun 21 Javascript
jQuery Form 页面表单提交的小例子
Nov 15 #Javascript
js简单实现用户注册信息的校验代码
Nov 15 #Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 #Javascript
jquery实现手风琴效果实例代码
Nov 15 #Javascript
jquery中插件实现自动添加用户的具体代码
Nov 15 #Javascript
用jquery中插件dialog实现弹框效果实例代码
Nov 15 #Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 #Javascript
You might like
php生成文件
2007/01/15 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
用JS剩余字数计算的代码
2008/07/03 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
python类型强制转换long to int的代码
2013/02/10 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
法学函授自我鉴定
2014/02/06 职场文书
《假如》教学反思
2014/04/17 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
银行授权委托书范本
2014/10/04 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
frg-100简单操作(设置)说明
2022/04/05 无线电