ifame 高度自适应

news/2023/6/8 18:46:34

ifame 高度自适应的原理 其实 就是 先把子页面中的高度求出来 然后更改 ifame 的值

<iframe width="100%" id="iframeid"  height="auto" scrolling="none" frameborder="0" src="index.html"></iframe>

 

index.html 
<script>
   
    window.onload = function(){
        
        var height = document.documentElement.scrollHeight;
        
        alert(height);
        var iframe = top.document.getElementById("iframeid");
        
        iframe.style.height = height+"px";
        
    }
    
</script>
  <div style="height:400px;width:400px;background:green;">
 
  </div>
   

 这种方式 在 除 chrome opera 下不行 据说是在客户端不行 放到服务器就可以了

 

 第二种方式

思路:现有主界面main在域a下,被嵌套页面B在域b下,被嵌套页面B又嵌套一个在域a下的中介页面A。 当用户打开浏览器访问mail.html的时候载入B,触发B的onload事件获取其自身高度,然后B载入A,并将高度值作为参数赋值给A的 location对象。这样A就可以通过location.hash获得B的高度。(location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url。而location.hash则可以用来获取或设置页面的标签值。比如http://domain/#admin的location.hash="#admin"。利用这个属性值可以做一些非常有意义的事情。)。由于A和main页面同域,所以可以修改main的dom节点属性,从而达到我们设置iframe标签高度的目的。

 

关键代码:

iframe主页面:main.html

<iframe id="iframeB"  name="iframeB" src="www.b.com/B.html" width="100%" height="auto" scrolling="no" frameborder="0"></iframe>

 

iframe嵌套页面:B.html

<iframe id="iframeA" name="iframeA" src="" width="0" height="0" style="display:none;" ></iframe><script type="text/javascript">
function sethash(){hashH = document.documentElement.scrollHeight; //获取自身高度urlC = "www.a.com/A.html"; //设置iframeA的srcdocument.getElementById("iframeA").src=urlC+"#"+hashH; //将高度作为参数传递
}
window.οnlοad=sethash;
</script>

中介页面:A.html

<script>
function  pseth() {var iObj = parent.parent.document.getElementById('iframeB');//A和main同域,所以可以访问节点iObjH = parent.parent.frames["iframeB"].frames["iframeA"].location.hash;//访问自己的location对象获取hash值iObj.style.height = iObjH.split("#")[1]+"px";//操作dom
}
pseth();
</script>

同域情况下就不用多说了,直接在被嵌套的页面B中获取其自身高度并操作其父窗口main的dom属性即可。

 

第三种方式

 用 css 实现

<style>
  html,body{
    width:100%;
    height:100%;
    overflow:hidden;
  }
  iframe{
    width:100%;
    height:100%;
    border:0;
  }
</style>

 

这种方式 经测试 在各个浏览器下都可以  毕竟是 css吗 没有安全问题


   

 

转载于:https://www.cnblogs.com/freeDesignLife/p/3210108.html


https://dhexx.cn/news/show-18362.html

相关文章

如何识别一个字符串是否Json格式

如何识别一个字符串是否Json格式 原文:如何识别一个字符串是否Json格式前言&#xff1a;距离上一篇文章&#xff0c;又过去一个多月了&#xff0c;近些时间&#xff0c;工作依旧很忙碌&#xff0c;除了管理方面的事&#xff0c;代码方面主要折腾三个事&#xff1a;1&#xff1a…

分布式系统Sentinel整合Open-Feign限流

分布式系统Sentinel整合Open-Feign限流一、前言二、sentinel控制台1、调用与被调用方引入依赖2、控制台搭建3、启动三、限流配置1、多个微服务接入Sentinel配置四、面板介绍五、基于并发线程数进行限流配置六、降级熔断策略1、熔断实操2、自定义降级异常数据七、Sentinel整合Op…

网关Gateway断⾔+过滤器整合注册中心Nacos项目实战

网关Gateway断⾔过滤器整合注册中心Nacos项目实战一、前言二、网关介绍三、基本网关转发1、创建Gateway项目2、配置四、整合注册中心Nacos1、添加Nacos依赖2、启动类开启支持3、修改配置文件4、网关访问的代码五、Gateway内置断言实现接口定时下线与强制参数六、自定义全局过滤…

Hadoop的体系结构

HDFS和MapReduce是Hadoop的两大核心。而整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持的&#xff0c;并且它会通过MapReduce来实现对分布式并行任务处理的程序支持。 1、HDFS的体系结构 HDFS采用了主从&#xff08;Master/Slave&#xff09;结构模型&#x…

Redis分布式锁实现

Redis分布式锁实现一、Redis分布式锁的出现二、普通分布式锁&#xff08;不推荐&#xff09;1、pom依赖2、普通版本的分布式锁3、redis分布式锁保证三、升级版分布式锁1、工具类2、场景一程序运行时间大于锁时间提前结束3、场景二程序运行时间小于锁自动释放时间&#xff0c;触…

Unity NGUI 创建简单的按钮

Unity版本&#xff1a;4.5.1  NGUI版本&#xff1a;3.6.5 注意NGUI版本&#xff0c;网上的大部分教程都是2.x版本的&#xff0c;在步骤上面略有不同&#xff0c;此文适合初学者。 示例&#xff1a; 通过NGUI创建一个背景和按钮。 1.首先创建一个新场景&#xff0c;并保存&…

UVa - 11283 - PLAYING BOGGLE

先上题目 Problem F PLAYING BOGGLE Boggle is a classic word game played on a 4 by 4 grid of letters. The letter grid is randomly generated by shaking 16 cubes labeled with a distribution of letters similar to that found in English words. Players try to find…

Open-Feign整合hystrix降级熔断实战

Open-Feign整合hystrix降级熔断实战一、服务端1、配置文件2、控制层二、客户端1、依赖2、配置文件3、启动类4、在控制层当中调用5、创建一个类实现服务FeignClient接口6、在服务FeignClient接口上配置FallBack实现类三、测试1、场景一服务正常调用2、场景二当被调服务停止运行时…

图的全局最小割的Stoer-Wagner算法及例题

Stoer-Wagner算法基本思想&#xff1a;如果能求出图中某两个顶点之间的最小割&#xff0c;更新答案后合并这两个顶点继续求最小割&#xff0c;到最后就得到答案。 算法步骤&#xff1a; ------------------------------------------------------------------------------------…

学习消息中间件Kafka从配置到基本应用

学习消息中间件Kafka从配置到基本应用一、服务器安装配置Kafka1、配置介绍与修改2、启动3、配置开机自启4、如果不使用自带的zookeeper二、Kafka的使用场景1、异步处理2、应用解耦3、流量削锋4、日志处理5、消息通讯三、点对点消息传递模式1、介绍四、发布-订阅消息传递模式1、…