代码改变世界

【转】真正的iframe高度自适应(兼容IE,FF,Opera)

  AnyKoro  阅读(278)  评论(0编辑  收藏  举报

由于项目上的需要,要用一个iframe高度自适应的功能

在google上搜了很久

找到了下面这个js

复制代码
function SetCwinHeight(obj)
{
  
var cwin=obj;
  
if (document.getElementById)
  {
    
if (cwin && !window.opera)
    {
      
if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight)
        cwin.height 
= cwin.contentDocument.body.offsetHeight + 20
      
else if(cwin.Document && cwin.Document.body.scrollHeight)
        cwin.height 
= cwin.Document.body.scrollHeight + 10;
    }
  }
}
复制代码

 

 

然后……

进入了测试过程(调用很简单,先略过)

1.IE ---通过   但是高度还是有稍微的差距,很小,滚动条还在

2.FF --- 通过  与IE一样,有小差距

3.Opera --- 看那个JS的条件就知道,通不过的

 

但主流浏览器至少要通过这三项撒!!!

 

于是,还是Google

搜索 各浏览器在处理 document.scrollHeight 或者 offsetHeigth时的特殊现象

发现,Opera浏览器在处理iframe内容的时候,用的是contentWindow

而处理内容高度的时候,却与IE一致

从而,有了下面这段js

 

复制代码
<html>
<head>
<script>
function SetCwinHeight(obj)
{
  
var cwin=obj;
  
if (document.getElementById)
  {
    
if (cwin && !window.opera)
    {
      
if (cwin.contentDocument && cwin.contentDocument.body.offsetHeight)
        cwin.height 
= cwin.contentDocument.body.offsetHeight + 20//FF NS
      else if(cwin.Document && cwin.Document.body.scrollHeight)
        cwin.height 
= cwin.Document.body.scrollHeight + 10;//IE
    }
    
else
    {
        
if(cwin.contentWindow.document && cwin.contentWindow.document.body.scrollHeight)
            cwin.height 
= cwin.contentWindow.document.body.scrollHeight;//Opera
    }
  }
}
</script>
</head>
<body>
<iframe src="20103622440.html" onload="SetCwinHeight(this);" width="600px">
</body>
</html>
复制代码

 

 

这样一来,总算把这三个浏览器给适应了

做为程序员,还是要细心点

再测试一下

OK...3个浏览器均正常显示,也无iframe的纵向滚动条了

 

小弟我初次发Blog文

大家莫拍我啊~:)

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示