异步跨域加载 js

PHPABC JavaScript 812 次浏览 没有评论

从jQuery中剥离出来的,不依赖JQuery。

调用:new ET().getScript({url:url,callback:function(){}})

var ET = function(){
  this.config = {
    url      : "",
    charset  : "utf-8",
    callback :function(){}
  }
}
 
ET.merge = function(d, s){
  for(var k in s){d[k] = s[k]}
	return d;
}
 
ET.prototype = {
  getScript : function(config){
    var _script, _callback;
 
    this.config = ET.merge(this.config, config);
 
    _script = document.createElement("script");
    _script.setAttribute("type", "text/javascript");
    _script.setAttribute("charset", this.config.charset);
    _script.setAttribute("src", this.config.url);
 
    document.body.appendChild(_script);
 
    _callback = this.config.callback;
    _script.onload = _script.onreadystatechange = function(callback){
      if(!this.readyState || this.readyState=='loaded' || this.readyState=='complete'){
        _callback();
      }
    }
  }
}

IE的 script 元素支持onreadystatechange事件,不支持onload事件。
firefox的 script 元素不支持onreadystatechange事件,只支持onload事件。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go