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 相关文章推荐
JQuery之focus函数使用介绍
Aug 20 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
Aug 03 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
关于js对textarea换行符的处理方法浅析
Aug 03 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
angular6开发steps步骤条组件
Jul 04 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 Javascript
关于Vue中$refs的探索浅析
Nov 05 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/05/27 PHP
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
超级退弹代码
2008/07/07 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
python3学生名片管理v2.0版
2018/11/29 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
python批量创建指定名称的文件夹
2019/03/21 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python3分析处理声音数据的例子
2019/08/27 Python
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
最新自我评价范文
2013/11/16 职场文书
物业工作计划书
2014/01/10 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
服装店营销方案
2014/03/10 职场文书
食品安全责任书
2014/04/15 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
php将xml转化对象的实例详解
2021/11/17 PHP
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫