码迷,mamicode.com
首页 > 其他好文 > 详细

iframe跨域动态设置主窗口宽高

时间:2018-01-17 16:05:56      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:max   script   宽高   scrolling   div   窗口   let   post   一个   

Q:
在A项目的a页面嵌入一个iframe,
src是B项目的b页面,
怎样让a页面的高度跟b页面的高度一样?

A:
解决跨域方案:增加一个A项目的c页面。


操作步骤:

一,a页面的iframe设置: 获取到当前域名,作为参数设置到src上

1 <iframe id={idname} title=" " scrolling="no" src={`${iframeUrl}?zeus=${locationOrigin}`} >

 

  

二,b页面页脚增加以下代码:
通过location拿到a页面的域名,请求A项目的c页面,并将b页面的宽度高度/宽度通过src传到c页面。

 1 <script type="text/javascript">
 2 !(function (){
 3     var search = window.location.search;
 4     if(!search || search.indexOf(zeus) === -1)return;
 5      var query = {};
 6      search.slice(1).split(&).forEach(function(item){
 7          var a = item.split(=);
 8         query[a[0]] = a[1];
 9      })
10     if(query.zeus){
11         var body = document.body;
12         var w = Math.max(body.scrollWidth, body.clientWidth);
13         var h = Math.max(body.scrollHeight, body.clientHeight);
14         var iframeNode = document.createElement(iframe);
15         iframeNode.style.display = none;
16         iframeNode.src = query.zeus + /m/iframe/ware# + w + | + h;
17         body.appendChild(iframeNode);
18     }
19 })();
20 </script>  

 

三,c页面添加以下代码:
通过location拿到b页面的宽高,然后设置a页面的宽高,done!

 1 const setIframeWH = () => {
 2   const outerWindow = window.parent.parent;
 3   const locationPathname = outerWindow.location.pathname;
 4   const idname = locationPathname.replace(/\//gi, ‘__‘);
 5   let iframeMain = outerWindow.document.getElementById(idname);
 6   let hash = window.location.hash;
 7   if (iframeMain && hash.indexOf(‘#‘) >= 0) {
 8     let [width, height] = hash.slice(1).split(‘|‘);
 9     iframeMain.style.width = `${width}px`;
10     iframeMain.style.height = `${Number(height) + 50}px`;
11   }
12 }

 

iframe跨域动态设置主窗口宽高

标签:max   script   宽高   scrolling   div   窗口   let   post   一个   

原文地址:https://www.cnblogs.com/wwwweb/p/8302569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!