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

作者:袖梨 2022-11-14

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

代码如下 复制代码
/*
动态加载js v1.0 by:dum 2012-03-17 www.111com.net
用法:src="webJsBase.js?load=a,b"
注:加载本目录下js
*/
var webJsBase = {
require: function(libraryName) {
document.write('');
},
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加个id再去动态改变已有script的src 属性

代码如下 复制代码

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

代码如下 复制代码

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

代码如下 复制代码
function include(src) {
HTMLCode = '';
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的方法。

相关文章

精彩推荐