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设置网页图片vspace和hspace属性的方法
Apr 01 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
Apr 06 Javascript
js style.display=block显示布局错乱问题的解决方法
Sep 21 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
Oct 24 Javascript
AngularJS入门教程之数据绑定原理详解
Nov 02 Javascript
javascript实现无法关闭的弹框
Nov 27 Javascript
详解JavaScript中的属性和特性
Dec 08 Javascript
vue-router history模式下的微信分享小结
Jul 05 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
react koa rematch 如何打造一套服务端渲染架子
Jun 26 Javascript
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
react 项目中引入图片的几种方式
Jun 02 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
Zend Framework页面缓存实例
2014/06/25 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
jQuery知识点整理
2015/01/30 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
python3生成随机数实例
2014/10/20 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
PyTorch中permute的用法详解
2019/12/30 Python
pytorch masked_fill报错的解决
2020/02/18 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
关于热爱祖国的演讲稿
2014/05/04 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
个人委托书范本
2014/09/13 职场文书
大学生入党自荐书
2015/03/05 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
JS实现数组去重的11种方法总结
2022/04/04 Javascript