function loadScript(url,callback){
var script = document.createElement("script");
script.type = "text/javascript";
if(script.readyState){//IE
script.onreadystatechange = function(){
if(script.readyState=="loaded" || script.readyState=="sonplete"){
script.onreadystatechange = null;//删除事件处理器,确保事件不会处理两次
callback();
}
}
}else{//其他浏览器
script.onload = function(){
callback();
}
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}
Firefox,Opera,Chrome和Safari3以上版本会在<script>元素接收完成时触发load事件,IE支持另一种实现方式,它会触发readystatechange事件。<script>元素提供一个readyState属性,它的值在外链文件下载过程的不同阶段会发生变化,该属性有五种取值:
- uninitialized 初始状态
- loading 开始下载
- loaded 下载完成
- interactive 数据下载完成但尚不可用
- complete 所有数据已准备就绪
最有用的两个状态是“loaded”和“complete”