您是第 Web Page Tracking 位访客

水~墨~

昂首阔步,不留一点遗憾!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

通过window.name可以实现跨域数据传输。

 

要解决的功能:  www.a.com/a.html 需要获取到 www.b.com/b.html页面内容的数据

需要3个页面

 

原理: www.a.com/a.html 中通过javascript创建iframe,并将location指向 www.b.com/b.com,并监听iframe的dom onload,加载完毕后修改location指向www.a.com/c.html

 

实现步骤

1. www.a.com/a.html 的head元素中一段javascript代码

 

<script type="text/javascript">
       var state = 0;
       iframe = document.createElement("iframe");
       loadfn = function () {

           if (state === 1) {

               var data = iframe.contentWindow.name;
               alert(data);

  //下面还可以加入获取数据后,移除iframe,释放内存的代码

 

   iframe.contentWindow.document.write('');
    iframe.contentWindow.close();
    document.body.removeChild(iframe);

           } else if (state === 0) {

               state = 1;
               iframe.contentWindow.location = "WebForm2.aspx";

           }

       };

       iframe.src = 'http://b.com/data.html';
       if (iframe.attachEvent) {
           iframe.attachEvent('onload', loadfn);
       } else {
           iframe.onload = loadfn;
       }
       document.body.appendChild(iframe);
   </script>

 

 

2.  www.b.com/b.html 设置数据

 

<script type=”text/javascript” >

window.name=”xxxxx”;        

  //xxxxx就是要传输的数据。将数据放到window.name中供不同域的web程序使用; 数据大小限制不同浏览器要求不同  ie ,firefox貌似为32m,其余为2m好像 ,类型可为json,字符串

</script>

 

3. www.a.com/c.html 不需要有任何代码

posted on 2014-01-11 21:23  水墨.MR.H  阅读(1373)  评论(0编辑  收藏  举报
知识共享许可协议
本博客为水墨原创,基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的水墨(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。