最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript跨域總結(jié)之window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸

 更新時(shí)間:2015年11月01日 09:47:38   作者:3.25  
本文給大家介紹window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸,自己親自實(shí)踐了一下,真的非常好用,特此分享到腳本之家網(wǎng)站供大家參考

自己實(shí)踐了一下,真的很好用。特將具體實(shí)現(xiàn)方法記錄如下

有三個(gè)頁(yè)面:

    a.com/app.html:應(yīng)用頁(yè)面。
    a.com/proxy.html:代理文件,一般是一個(gè)沒(méi)有任何內(nèi)容的html文件,需要和應(yīng)用頁(yè)面在同一域下。
    b.com/data.html:應(yīng)用頁(yè)面需要獲取數(shù)據(jù)的頁(yè)面,可稱為數(shù)據(jù)頁(yè)面。

實(shí)現(xiàn)起來(lái)基本步驟如下:

    在應(yīng)用頁(yè)面(a.com/app.html)中創(chuàng)建一個(gè)iframe,把其src指向數(shù)據(jù)頁(yè)面(b.com/data.html)。
    數(shù)據(jù)頁(yè)面會(huì)把數(shù)據(jù)附加到這個(gè)iframe的window.name上,data.html代碼如下:

  <script type="text/javascript">
    window.name = 'I was there!';  // 這里是要傳輸?shù)臄?shù)據(jù),大小一般為2M,IE和firefox下可以大至32M左右
                     // 數(shù)據(jù)格式可以自定義,如json、字符串
  </script>

    在應(yīng)用頁(yè)面(a.com/app.html)中監(jiān)聽(tīng)iframe的onload事件,在此事件中設(shè)置這個(gè)iframe的src指向本地域的代理文件(代理文件和應(yīng)用頁(yè)面在同一域下,所以可以相互通信)。app.html部分代碼如下:

<script type="text/javascript">
    var state = 0, 
    iframe = document.createElement('iframe'),
    loadfn = function() {
      if (state === 1) {
        var data = iframe.contentWindow.name;  // 讀取數(shù)據(jù)
        alert(data);  //彈出'I was there!'
      } else if (state === 0) {
        state = 1;
        iframe.contentWindow.location = "http://a.com/proxy.html";  // 設(shè)置的代理文件
      } 
    };
    iframe.src = 'http://b.com/data.html';
    if (iframe.attachEvent) {
      iframe.attachEvent('onload', loadfn);
    } else {
      iframe.onload = loadfn;
    }
    document.body.appendChild(iframe);
  </script>

    獲取數(shù)據(jù)以后銷毀這個(gè)iframe,釋放內(nèi)存;這也保證了安全(不被其他域frame js訪問(wèn))。

<script type="text/javascript">
    iframe.contentWindow.document.write('');
    iframe.contentWindow.close();
    document.body.removeChild(iframe);
  </script>

總結(jié)起來(lái)即:iframe的src屬性由外域轉(zhuǎn)向本地域,跨域數(shù)據(jù)即由iframe的window.name從外域傳遞到本地域。這個(gè)就巧妙地繞過(guò)了瀏覽器的跨域訪問(wèn)限制,但同時(shí)它又是安全操作。

相關(guān)文章

最新評(píng)論

磐安县| 和平县| 登封市| 洞口县| 郎溪县| 泸州市| 临朐县| 泽库县| 班戈县| 桐乡市| 阳春市| 工布江达县| 锦屏县| 盘山县| 镇江市| 沁阳市| 河南省| 开封县| 和龙市| 洛隆县| 新丰县| 宣恩县| 长沙县| 鄄城县| 江源县| 阳高县| 平安县| 平舆县| 明光市| 莫力| 兴安县| 太白县| 宣汉县| 登封市| 呼和浩特市| 通州市| 屯门区| 南阳市| 托克托县| 乡宁县| 定日县|