按需加载异步js

<body>
	<script type = "text/javascript" src="test.js"></script>
</body>

test.js

//封装loadScript(),实现加载异步js
function loadScript(url,callback){//第一个参数是源路径,第二个参数是回调函数(当满足一定条件才执行的函数)
	var script = document.createElement('script');
	script.type = 'text/javascript';
	//附加到documen内才能被执行
	document.head.appendChild(script);

	// 有无提示机制,下载完提醒可以执行程序?有!
	if(script.readyState){
		// IE使用状态码readyState会根据script标签动态改变其值
		// 正在加载——'loading'
		// 加载完毕——'complete/loaded'
		// IE提供了一个监听状态码的事件onreadystatechange
		script.onreadystatechange = function(){
			if(readyState == 'loaded' || readyState == "complete"){
				callback();// ②tools[callback]();
			}
		}
	}else{
		//当它触发onload事件则证明下载结束
		script.onload = function(){//兼容性好(除IE以外)
			callback();//②tools[callback]();
		}
	}
	script.src = url//下载需要一定时间;先绑定事件,再引入
}
// loadScript('todo.js',a);
//执行结果:a is not defined
//原因:因为执行到该句时,没有加载函数体,所以系统只会认为a是一个未定义的变量
//方法一:
loadScript('todo.js',function(){
	a();
// });
//方法二:将上面代码改成②号代码
// loadScript('todo.js','b');

todo.js

function a(){
	alert('a');
}
var tools = {
	b : function b(){
		alert('b');
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值