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 相关文章推荐
JS中prototype关键字的功能介绍及使用示例
Jul 21 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
jquery 插件实现多行文本框[textarea]自动高度
Mar 04 Javascript
Javascript递归打印Document层次关系实例分析
May 15 Javascript
PHP结合jQuery实现红蓝投票功能特效
Jul 22 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
Bootstrap fileinput文件上传预览插件使用详解
May 16 Javascript
node.js操作mongodb简单示例分享
May 25 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
对vuex中getters计算过滤操作详解
Nov 06 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 异常处理实现代码
2009/03/10 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
php实现将Session写入数据库
2015/07/26 PHP
两款万能的php分页类
2015/11/12 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
Python可跨平台实现获取按键的方法
2015/03/05 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
Python函数中的可变长参数详解
2019/09/12 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
国外的一些J2EE面试题一
2012/10/13 面试题
机电专业毕业生求职信
2013/10/27 职场文书
后勤主管岗位职责
2014/03/01 职场文书
西湖英语导游词
2015/02/06 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
客户答谢会致辞
2015/07/30 职场文书
工作建议书范文
2019/07/08 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技