如何在Javascript中包含Javascript

现在常用的一种javascript的方法是在当前的html文档中插入一个script标签,在标签中引入script脚本

 

var __includes__ = new Array;  
Array.prototype.indexOf = function(obj){ for(var i = 0; i < this.length; i++){if (this[i] == obj)return i;}return -1;}
		Array.prototype.add = function(obj){this[this.length] = obj;}
function include_js(js)
{
	if (__includes__.indexOf(js) > -1)return;
	__includes__.add(js);
	var head = document.getElementsByTagName('head')[0];	
	script = document.createElement('script');
	script.src = js;
	script.type = 'text/javascript';
	head.appendChild(script);
}

 

当你只是在你的htmlw文档中使用这个方法的时候,一切OK,这其实是script的标签的一种快捷的写法而已。

但是,如果你在一个javascript使用这个方法,问题就来了,比如

我在test.js中使用include_js("test1.js"),在test1.js中有一个变量test1是在test.js中要使用的,在webkit中尽然出现了test1变量未定义的错误,我不知道ie和firefox是否有这种问题,我想可能是include_js本身不是同步执行导致的,所以我只好使用以下方法来完善inlcude_js

 

 

 

var __includes__ = new Array;  
Array.prototype.indexOf = function(obj){ for(var i = 0; i < this.length; i++){if (this[i] == obj)return i;}return -1;}
		Array.prototype.add = function(obj){this[this.length] = obj;}
		
function xhttp(url, callback)
{
    var request = null;
    if (typeof XMLHttpRequest != 'undefined') {
        request = new XMLHttpRequest();
    }
    else if (typeof ActiveXObject != 'undefined') {
        request = new ActiveXObject('Microsoft.XMLHTTP');
    }
    request.open('GET', url, true);
    request.onreadystatechange = function () {
        if (request.readyState == 4) {
            callback(request.responseText);
        }
    };
    request.send(null);			
}
function add_scripts(jss, callback)
{
    var func = function( jss, idx, callback){
        if (idx == jss.length) {callback();return};
        add_script(jss[idx], function(){func(jss, ++idx, callback);});
    }
    func(jss, 0, callback);
}
function add_script(js, callback)
{
    if (__includes__.indexOf(js) > -1){callback();return;}
    __includes__.add(js);    
    xhttp(js, function(js_content){
        var head = document.getElementsByTagName('head')[0];	
        script = document.createElement('script');
        head.appendChild(script);
        script.innerHTML = js_content;
        callback();
    });
}
		
		function include_js(js)
		{
			if (__includes__.indexOf(js) > -1)return;
			__includes__.add(js);
			var head = document.getElementsByTagName('head')[0];	
			script = document.createElement('script');
			script.src = js;
			script.type = 'text/javascript';
			head.appendChild(script);
		}	

 

 当我在html文档中引入的时候,我用 include_js,当我在js文件中引入js时候,我使用

 

add_scripts(['test1.js', 'test2.js']), function(){
//代码主体

});

 

 add_scripts方法使用了xmlhttp来读入js内容,并把读入的内容的写到一个新的script标签内,读入是异步执行的,当执行完毕后,会调用callback、

 

import javascript in javascript

 

include javascript in javascript

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值