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下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
jQuery操作元素css样式的三种方法
Jun 04 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
js实现简洁的TAB滑动门效果代码
Sep 06 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 Javascript
jQuery Mobile操作HTML5的常用函数总结
May 17 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
实例浅析js的this
Dec 11 Javascript
使用svg实现动态时钟效果
Jul 17 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
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
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
php中curl使用指南
2015/02/05 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
JavaScript中的 new 命令
2019/05/22 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python实现划词翻译
2020/04/23 Python
Python找出最小的K个数实例代码
2018/01/04 Python
pandas string转dataframe的方法
2018/04/11 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
实习单位推荐信范文
2013/11/27 职场文书
晚归检讨书
2014/02/19 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
小学生毕业评语
2014/12/26 职场文书
追悼会答谢词范文
2015/09/29 职场文书