欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現(xiàn)iframe自動高度調(diào)整和不同主域名跨域

 更新時間:2016年02月27日 16:25:30   作者:常思過  
這篇文章主要介紹了JavaScript實現(xiàn)iframe自動高度調(diào)整和不同主域名跨域,作者通過建立一個代理來同步高度調(diào)整,需要的朋友可以參考下

 大家都知道Js有同源策略,就是主域名不同嵌套的iframe不允許Js通信的。

比如我有一個網(wǎng)站,網(wǎng)站中要嵌入其網(wǎng)站的頁面。那么我可以使用iframe引用第三方網(wǎng)站的地址即可。

但是問題也來的iframe的高度是固定的不能與第三方網(wǎng)站很好的融合,又例如第三方網(wǎng)站使用了瀑布流插件,要滾動加載自動計算高度,那么先說跨域:iframe主域名不同跨域方法,假如網(wǎng)站 A.com  B.com   A 里面放入一個iframe 引用了B.com,這種情況下B.com里面的Js是無法訪問到A.com的。JS跨域必須是同源,就是同一個主域名,那腫么辦呢?

我們可以在B.com中在引入一個iframe,暫且叫C吧 這個iframe加載A.com中的一個網(wǎng)頁。這樣同源就有了B.com中的iframe中的網(wǎng)頁就可以和A.com通訊了。下面只要B和C通訊,讓C和A通訊就完成B->A通訊,這樣當B高度變化時通知C,讓C通知A把iframe高度調(diào)整。
B和C通訊,其實通過url地址就可以實現(xiàn)通訊了,B.com iframe設(shè)置為隱藏,改變src地址時候C就可以接收。

廢話不說了上代碼

A.com/index.html

<html>
  <script src="{$smarty.const.STATIC_URL}/js/jquery-1.7.1.min.js"></script>
  <script>
   var test = function() {
     $('#h1').html('test');
   }
   </script>
<body>
<h1 id="h1">nba.alltosun.net</h1>
<iframe id="ifm" width="760" height="100" src="http://***.sinaapp.com/"></iframe>
</body>
</html>


B.com/index.html

<html>
<head></head>
<body>
  <h1>**.appsina.com</h1>
  <button id="button">設(shè)置高度</button>
  <div id="div" style="height:200px;display:none;"></div>
  <script src="http://nba.alltosun.net/js/jquery-1.7.1.min.js"></script>
  <script>
  $(function(){
    window.ifrH = function(e){
      var searchUrl = window.location.search;
      var b = null;
       
      var getParam = function(url, param) {
        var q = url.match(new RegExp( param + "=[^&]*")),
        n = "";
        if (q && q.length) {
          n = q[0].replace(param + "=", "");
        }
        return n;
      }
       
      var f = getParam(searchUrl,"url"),
        h = getParam(searchUrl, "ifmID"),
        k = getParam(searchUrl, "cbn"),
        g = getParam(searchUrl, "mh");
       
 
      var iframeId = 'testiframe';
      var iframe = document.getElementById(iframeId);
      var divId = 'alltosun';
       
      if (!iframe){
        var iframe = document.createElement('iframe');
        iframe.id = iframeId;
        iframe.style.display = "none";
        iframe.width = 0;
        iframe.height = 0;
        document.body.appendChild(iframe);
      }
       
      if (e && e.type == "onload" && h) {
        b.parentNode.removeChild(b);
        b = null;
      }
       
      if (!b) {
        b = document.createElement("div");
        b.id = divId;
        b.style.cssText = "clear:both;"
        document.body.appendChild(b);
      }
       
      var l = b.offsetTop + b.offsetHeight;
      iframe.src = (decodeURIComponent(f) || 
          "http://*****/test2") + "&h=" + l + "&ifmID=" + (h || "ifm") + "&cbn=test" + "&mh=" + g + "&t=" + ( (+ new Date()));
       
      if (e && e.type =="onload") {
        window.onload = null;
      }
    }
     
    window.onload = function() {
      ifrH({type: "onload"});
    }
     
    // ifrH();
    $('button').click(function(){
      $('div').show();
      ifrH();
    })
  })
  </script>
</body>
</html>


C 代理文件

<script>
var search = window.location.search,
getSearchParam = function (search, key) {
  var mc = search.match (new RegExp ( key + "=([^\&]*)") ),
    ret="";
  mc && mc.length && (ret = mc[0].replace( key + "=",""));
  return ret;
},
// 參數(shù)h 
h = getSearchParam(search,"h"),
ifmID = getSearchParam(search,"ifmID"),
cbn = getSearchParam(search,"cbn"),
// 寬高
mh = getSearchParam(search,"mh") || h,
isFunction = function(fn){
  return !!fn && !fn.nodeName && fn.constructor != String 
      && fn.constructor != RegExp && fn.constructor != Array 
      && (/function/i).test(fn + "");
};
 
try{
  if(parent && parent.parent){
    ifm = parent.parent.document.getElementById(ifmID);
    ifm && mh && (ifm.height=mh);
    fn=parent.parent[cbn];
    isFunction(fn) && fn.call();
    ifm=null;
  }
}catch(ex){
  console.log(ex);
}
 
</script>

相關(guān)文章

  • 小程序?qū)崿F(xiàn)tab標簽頁

    小程序?qū)崿F(xiàn)tab標簽頁

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)tab標簽頁,可點擊切換,滑動切換頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Bootstrap 響應(yīng)式實用工具實例詳解

    Bootstrap 響應(yīng)式實用工具實例詳解

    Bootstrap 提供了一些輔助類,以便更快地實現(xiàn)對移動設(shè)備友好的開發(fā)。這些可以通過媒體查詢結(jié)合大型、小型和中型設(shè)備,實現(xiàn)內(nèi)容對設(shè)備的顯示和隱藏。下面通過本文給大家分享Bootstrap 響應(yīng)式實用工具,一起看看吧
    2017-03-03
  • 判斷用戶是否在線的代碼

    判斷用戶是否在線的代碼

    判斷用戶是否在線的代碼,需要的朋友可以參考下。
    2011-03-03
  • 利用騰訊的ip地址庫做ip物理地址定位

    利用騰訊的ip地址庫做ip物理地址定位

    騰訊的這個還是相對比較準確的。因為騰訊每個QQ用戶發(fā)現(xiàn)自己匹配的地理位置信息不準確都可以提交更正的
    2010-07-07
  • JavaScript中的簡寫語法分享

    JavaScript中的簡寫語法分享

    這篇文章主要為大家整理了12個JavaScript中常用的簡寫語法技巧,文中的示例代碼講解詳細,具有一定的參考價值,需要的小伙伴可以收藏一下
    2023-04-04
  • 微信小程序定義和調(diào)用全局變量globalData的實現(xiàn)

    微信小程序定義和調(diào)用全局變量globalData的實現(xiàn)

    這篇文章主要介紹了微信小程序定義和調(diào)用全局變量globalData的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • JavaScript 利用StringBuffer類提升+=拼接字符串效率

    JavaScript 利用StringBuffer類提升+=拼接字符串效率

    JavaScript 利用StringBuffer類提升+=拼接字符串效率,需要的朋友可以參考下。
    2009-11-11
  • 微信小程序分享卡片花樣玩法之私密消息和動態(tài)消息

    微信小程序分享卡片花樣玩法之私密消息和動態(tài)消息

    用戶可以發(fā)送小程序卡片給微信好友或者群,點擊小程序卡片可以直接進入小程序,這篇文章主要給大家介紹了關(guān)于微信小程序分享卡片花樣玩法之私密消息和動態(tài)消息的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 基于HTML+JS實現(xiàn)簡單的年齡計算器

    基于HTML+JS實現(xiàn)簡單的年齡計算器

    JavaScript提供了一些內(nèi)置的日期和時間函數(shù),有助于從日期(出生日期)開始計算年齡。本文主要介紹了使用這些JavaScript方法,制作一個簡單的年齡計算器,快來跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 原生js實現(xiàn)彈幕效果

    原生js實現(xiàn)彈幕效果

    這篇文章主要為大家詳細介紹了原生js實現(xiàn)彈幕效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評論