现在的位置: 首页 > 综合 > 正文

扩展jQuery跨域加载js文件

2013年10月14日 ⁄ 综合 ⁄ 共 1793字 ⁄ 字号 评论关闭
 众所周知ajax中的同源策略,不能够向其他主机发送ajax请求,在jQuery中提供了一个getScript()方法,可以获取远程js文件,并执行,但这一功能也具有同源性.由于前段时间工作需要访问其他服务器上的一个js文件中的数据,对该函数进行了一个扩展,希望能对使用jQuery的朋友有所帮助,代码如下://扩展jQuery加载跨域名js脚本
 jQuery.extend(
  {
   /**
    * @brief: 加载跨域名js脚本
    * @param: 脚本URL
    * @param: 加载完毕回调函数
    */
   getScriptEx : function (jsurl, fCallback, fError)
   {
    var BROWSER_IE = window.navigator.userAgent.indexOf("MSIE") != -1;
    var SCRIPT_TIMEOUT = 20000;
       
       if (typeof(fCallback) != "function") fCallback = new Function();
       if (typeof(fError) != "function") fError = new Function();

       var oScriptEl, oTimeoutHDL, oHead;
    try
    {
         oScriptEl = document.createElement("script");
         oScriptEl.type      = "text/javascript";
         oScriptEl.language     = "javascript";
         oScriptEl.src       = jsurl + "?" + Math.random();
         oScriptEl.onreadystatechange = doCallback;
       
         if (BROWSER_IE)
      {
             oScriptEl.onload = function()
       {
                this.readyState = "complete";
                 doCallback();
             };
          };
       
          oTimeoutHDL = window.setTimeout(doError, SCRIPT_TIMEOUT);
          document.getElementsByTagName("head")[0].appendChild(oScriptEl);
    
     }
     catch(error)
     {}
   
       function doCallback()
    {
     try
        {
      if (oScriptEl.readyState == "complete" || oScriptEl.readyState == "loaded")
      {
                 oScriptEl.onload = oScriptEl.onreadystatechange = new Function();
                 fCallback();
                 window.clearTimeout(oTimeoutHDL);
                 oScriptEl.parentNode.removeChild(oScriptEl);
             }
     }
     catch(error)
     {}
        };
   
       function doError()
    {
     try
     {
             oScriptEl.parentNode.removeChild(oScriptEl);
     }
     catch(error)
     {}
       };
   }
  }

如何使用不用我讲了吧,慢慢爽吧!

抱歉!评论已关闭.