一个比较全部在动态加方法
复制代码 代码如下:
/*
动态加载js v1.0 by:dum
用法: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 属性
复制代码 代码如下:
s1.src=test.js
这里利用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的方法。