shawl.qiu javascript 跨域类... sqCrossDomain v1.0

 shawl.qiu  脚本跨域类... sqCrossDomain v1.0


说明:
首先...要声明的是, 实现 js 绝对跨域是不可能的,
不过本类确实实现了跨域.
   
用 iframe , object 标签, 我是弄过N次了, 还改写了某些方法, 死活就是不行.

最后嘛, 一个常见现象大家可能忽略了.
.js 文件不就是可以跨域使用的么...当然这个就只能用在某些预定内容上了, 但这个对我来说刚好有用.

 如果你想实现HTML页跨域, 那应该用服务端技术...不过也可以使用本方法进行跨域, 只是比较麻烦一些, 需要先单独做一个调用页把内容转换成JS内容.

扯正题:
本类要实现的就是从不同域加载某一文件 , 可以是 .js, .txt *.文本文件 里加载内容.
内容是一个 js 变量, 变量的内容嘛可就是千变万化了..

原理嘛, 是这样滴:
首先你要确定你有一个文本文件, 里面放着一个 js 变量和其内容.
 然后使用 DOM 动态创建 script 标签, 再使用 setInterval 检测那个 js 变量, 如果不为空则加载完毕, 如果超过预定时间, 则显示超时...

看源码吧, 说着累.

shawl.qiu
2007-05-10
http://blog.csdn.net/btbtd

目录:
1.文本文件 local_playlist1_script.txt
2. 类 sqCrossDomain v1.0

下载:
http://files.myopera.com/btbtd/javascript/sqCrossDomain_v1.0.7z

内容:
1.文本文件 local_playlist1_script.txt
  1. var ScriptText = 
  2. "Donna Lewis[I Could Be the One]|"+
  3. "/sqMusicPlayer/mp3/[I Could Be the One][Donna Lewis][blue planet].mp3||"+

  4. "The Cranberries[Never Grow old]|"+
  5. "/sqMusicPlayer/mp3/[Never Grow old][The Cranberries][Wake Up And Smell The Coffee].mp3||"+

  6. "Tomohisa Okudos[Always With Me]|"+
  7. "/sqMusicPlayer/mp3/[Always With Me][Tomohisa Okudo][幸福的味道].mp3||"+
  8.  
  9. "同船过渡[Love Is... 2]|"+
  10. "/sqMusicPlayer/mp3/[11·Love Is... 2][同船过渡][Unknown].mp3||"+
  11.  
  12. "Standfase[no longer]|"+
  13. "/sqMusicPlayer/mp3/standfast-nolonger.mp3||"+
  14.  
  15. "M2M[Pretty Boy]|"+
  16. "/sqMusicPlayer/mp3/[Pretty Boy][M2M][Shades Of Purple].mp3||"+
  17.  
  18. "Allison Krauss[When You Say Nothin At All]|"+
  19. "/sqMusicPlayer/mp3/[When You Say Nothin At All - A][Allison Krauss][The Other Sister soundtrack].mp3||"+
  20.  
  21. "Sweet[爱是怎么一回事]|"+
  22. "/sqMusicPlayer/mp3/[爱是怎么一回事(华视舞动奇迹片蝅[Sweet][We ll Go On the Stage].mp3||"
  23. ;

  24. //TextGlobal = Text;
2. 类 sqCrossDomain v1.0
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <!-- DW6 -->
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>shawl.qiu template</title>
  7. <script type="text/javascript" id="SptTest">
  8. //<![CDATA[
  9.  /*-----------------------------------------------------------------------------------*/
  10.   * shawl.qiu sqCrossDomain class v1.0
  11.  /*-----------------------------------------------------------------------------------*/
  12.  //---------------------------------begin class sqCrossDomain()-------------------------------//
  13.  function sqCrossDomain()
  14.  { // shawl.qiu code
  15.   //------------------------------------begin public variable
  16.   //---------------begin about
  17.   this.auSubject = 'shawl.qiu sqCrossDomain class';
  18.   this.auVersion = 'v1.0';
  19.   this.au = 'shawl.qiu';
  20.   this.auEmail = 'shawl.qiu@gmail.com';
  21.   this.auBlog = 'http://blog.csdn.net/btbtd';
  22.   this.auCreateDate = '2007-5-10';
  23.   //---------------end about
  24.   this.Interval = {};
  25.   this.Interval.Ms = 100;
  26.   this.Interval.Limit = 10000;
  27.   this.Interval.Count = 1;
  28.   this.Interval.Temp = 0;
  29.   this.Interval.Func = null;
  30.   
  31.   this.Script = function(){};
  32.   this.Script.Url = "";
  33.   this.Script.ID = "SptTextId";
  34.   
  35.   this.Identifier = function(){}
  36.   this.Identifier.VariableName = "";
  37.   
  38.   this.Prefix = "SADFkljkjfaksdskkk";
  39.   
  40.   this.CallBack = null;
  41.   this.Error = null;
  42.   
  43.   
  44.   this.Go = fGo;
  45.   //------------------------------------end public variable
  46.   
  47.   //------------------------------------begin private variable
  48.   var Tl = this;
  49.   //------------------------------------end private variable
  50.   
  51.   //------------------------------------begin public method
  52.   function fGo()
  53.   {
  54.    if(!Tl.CallBack)
  55.    {
  56.     alert("回调函数不能为空!");
  57.     return;
  58.    } // end if 
  59.    
  60.    if(Tl.Script.Url=="")
  61.    {
  62.     alert("路径不能为空!");
  63.     return;
  64.    }
  65.    
  66.    var EleHeadSet = document.getElementsByTagName("head");
  67.    if(EleHeadSet.length==0)
  68.    {
  69.     alert("Head 标签不存在, 操作无法进行!");
  70.     return;
  71.    }
  72.    
  73.    var EleHead = EleHeadSet[0];
  74.    
  75.    var EleSpt = document.createElement("script");
  76.     EleSpt.src = Tl.Script.Url;
  77.     EleSpt.id = Tl.Script.ID;
  78.     
  79.    EleHead.appendChild(EleSpt);   
  80.    
  81.    Tl.Interval.Func = 
  82.     setInterval
  83.     (
  84.      function()
  85.      {
  86.      
  87.       var sTemp = ""
  88.       try 
  89.       {
  90.        sTemp = eval(Tl.Identifier.VariableName);
  91.       }
  92.       catch(e)
  93.       {
  94.        sTemp = "";
  95.       }
  96.      
  97.       defaultStatus = "空值: "+(sTemp=="")+" | 尝试加载次数: "+Tl.Interval.Count++;
  98.       Tl.Interval.Temp += Tl.Interval.Ms;
  99.       
  100.       if(sTemp!="")
  101.       {
  102.        clearInterval(Tl.Interval.Func);
  103.        Tl.CallBack(sTemp);
  104.       }
  105.       
  106.       if(Tl.Interval.Temp>=Tl.Interval.Limit)
  107.       {
  108.        clearInterval(Tl.Interval.Func);
  109.        defaultStatus = "加载超时!";
  110.        alert("超时");
  111.       }
  112.       
  113.      }
  114.      ,
  115.      Tl.Interval.Ms
  116.     );
  117.    
  118.   } // end function fGo
  119.   
  120.   function fFunc()
  121.   {
  122.   
  123.   }
  124.   
  125.   function fError(sMsg)
  126.   {
  127.    
  128.   }
  129.   //------------------------------------end public method
  130.  
  131.   //------------------------------------begin private method
  132.   
  133.   //------------------------------------end private method
  134.  } // shawl.qiu code
  135.  //---------------------------------end class sqCrossDomain()---------------------------------//
  136. var Acd = new sqCrossDomain();

  137.  onload = 
  138.   function()
  139.   { 
  140.    Acd.Interval.Ms = 100;
  141.    Acd.Interval.Limit = 10000;
  142.    
  143.    //Acd.Script.Url = "http://127.0.0.1:999/sqMusicPlayer/playlist/local_playlist1_script.txt"
  144.    Acd.Script.Url = "http://shawl.qiu.googlepages.com/local_playlist1_script.txt"
  145.    //Acd.Script.Url = "http://files.myopera.com/btbtd/sqMusicPlayer/PlayList/local_playlist1_script.txt"
  146.    Acd.Script.ID = "SptTextId";
  147.    
  148.    Acd.Identifier.VariableName = "ScriptText";
  149.    Acd.CallBack = fCallBack;
  150.    
  151.    Acd.Go();
  152. }
  153.  
  154.  function fCallBack(str)
  155.  {
  156.   alert(str);
  157.  }
  158. //]]>
  159. </script>
  160. </head>
  161. <body>

  162. </body>
  163. </html>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值