iframe的几个常见问题

简介:

 1.iframe的透明问题

除了IE家族,其他标准浏览器默认iframe是透明的。

对应IE7+ 的浏览器:

加个allowtransparency="true"如下

 

 
  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <title>无标题</title> 
  5. </head> 
  6. <body style="background-color:#ccc;"> 
  7. <iframe allowtransparency="true" src="ifrm.html"></iframe> 
  8. </body> 
  9. </html> 

对应ie6还要设置iframe页面的body背景透明

 

 
  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <title>内框架页</title> 
  5. </head> 
  6. <body style="background-color:transparent;"> 
  7. 这里是内框架页面。 
  8. </body> 
  9. </html> 

注:如果iframe页面不在同一域下,发现此方法失效。

2.去边框,滚动条等

 边框:

除了ie家族,可以使用css的border:none;实现。

ie得需设置iframe的frameborder="no"或者frameborder="0"实现,于是兼容的写法如下:

 

 
  1. <iframe allowtransparency="true" src="ifrm.html" style="border:none;" frameborder="no"></iframe> 

滚动条:

隐藏滚动条可以用scrolling="no"(此方式兼容所有的浏览器)

 
  1. <iframe allowtransparency="true" src="ifrm.html" scrolling="no" style="border:none;" frameborder="no"></iframe> 

 

对于ie8,ff3,chrome等,设置框架页的body的overflow:hidden;也可以隐藏滚动条(ie6,7,或者iframe页面对你不可控时不行)。

3.iframe自适应宽高度

 注:iframe的默认尺寸是300*150px

 方法是在iframe文档的onload加载句柄里做

 

 
  1. <iframe id="myifrm" onload="this.height=myifrm.document.body.scrollHeight;" allowtransparency="true" src="ifrm.html" scrolling="no" style="border:none;" frameborder="no"></iframe> 

 就把iframe里的页面的高度赋值给iframe框架窗口高度。

但这个火狐,认name窗口名,不信可以把id改成name试试,所以,兼容的写法是同时加上name,如:

 

 
  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <title>无标题</title> 
  5. </head> 
  6. <body style="background-color:#ccc;"> 
  7. <iframe id="myifrm" name="myifrm" onload="this.height=myifrm.document.body.scrollHeight;" allowtransparency="true" src="ifrm.html" scrolling="no" style="border:none;" frameborder="no"></iframe> 
  8. </body> 
  9. </html> 

或者不写name也行(ie6,7未测试):

 

 
  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <title>无标题</title> 
  5. </head> 
  6. <body style="background-color:#ccc;"> 
  7. <iframe id="myifrm" onload="this.height=document.getElementById('myifrm').contentDocument.body.scrollHeight;" allowtransparency="true" src="ifrm.html" scrolling="no" style="border:none;" frameborder="no"></iframe> 
  8. </body> 
  9. </html> 

 

这里再提供一个网上写好的一个函数:

 

 
  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <title>无标题</title> 
  5. <script type="text/javascript" language="javascript">    
  6. function iFrameHeight() {    
  7.     var ifmdocument.getElementById("myifrm");    
  8.     var subWeb = document.frames ? document.frames["myifrm"].document : ifm.contentDocument;    
  9.     if(ifm != null && subWeb != null) { 
  10.        ifm.height = subWeb.body.scrollHeight; 
  11.     }    
  12. }    
  13. </script> 
  14. </head> 
  15. <body style="background-color:#ccc;"> 
  16. <iframe id="myifrm" onload="iFrameHeight();" allowtransparency="true" src="ifrm.html" scrolling="no" style="border:none;" frameborder="no"></iframe> 
  17. </body> 
  18. </html> 

 

注意:这里在chrome里,通过file://访问发现不行,但是http://可以,不知道何故。

 

在onload里处理有个问题,就是无法应对ifrm页面里内容变动引起高度变化,简单说,比如tab页签,2个tab页高度不一样,切换时就有问题了。

在口碑UED博客看到,通过定时执行一下的方法:

 

 
  1. window.setInterval("iFrameHeight()", 200); 

读者可以看下这篇文章,我没怎么看,抽空看下:-)

http://ued.koubei.com/?p=243

4.iframe页面与包含窗口的互通信

 

5.连带父子页面刷新问题

 


 本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/376271,如需转载请自行联系原作者

相关文章
|
2月前
|
前端开发 安全 Go
无法通过 iframe 将百度首页嵌入到自己的前端应用里
无法通过 iframe 将百度首页嵌入到自己的前端应用里
191 0
|
5月前
|
安全 定位技术
什么是iframe?请讲述一下iframe的优缺点?
什么是iframe?请讲述一下iframe的优缺点?
20 0
|
8月前
element plus 上传图片到后端功能
element plus 上传图片到后端功能
170 0
|
10月前
|
Web App开发 缓存 应用服务中间件
解决如何知道iframe下载完成 #92
解决如何知道iframe下载完成 #92
214 0
|
JavaScript 搜索推荐 应用服务中间件
怎么防止网站被别人使用iframe框架恶意调用
发生歹意网站的危害关于新站来说,是比较大的。那我们应该怎样防止别人歹意镜像我们的网站呢?首要得了解一下镜像网站的原理,镜像网站大约需求以下的几个条件:你的网站运用了独立IP.当然,独立ip对一个网站来说,是好的,可以和其他网站差异开来,成为镜像网站的条件之一,只是独立ip的一个小缺陷。
100 0
怎么防止网站被别人使用iframe框架恶意调用
多Iframe版后台,在一个iframe切换到另一个iframe,同时刷新
多Iframe版后台,在一个iframe切换到另一个iframe,同时刷新
169 0
多Iframe版后台,在一个iframe切换到另一个iframe,同时刷新
|
JavaScript
Layui-admin-iframe通过页面链接直接在iframe内打开一个新的页面,实现单页面的效果
Layui-admin-iframe通过页面链接直接在iframe内打开一个新的页面,实现单页面的效果
683 0
Layui-admin-iframe通过页面链接直接在iframe内打开一个新的页面,实现单页面的效果
|
JavaScript 搜索推荐 SEO
iframe简要介绍
iframe简要介绍
262 0
iframe简要介绍
将某个网站嵌入到iframe的测试
将某个网站嵌入到iframe的测试
201 0
将某个网站嵌入到iframe的测试
|
Web App开发 前端开发 容器
如何解决 iframe 无法触发 clickOutside
在公司的一次小组分享会上,组长给我们分享了一个他在项目中遇到的一个问题。在一个嵌入 iframe 的系统中,当我们点击按钮展开 Dropdown 展开后,再去点击 iframe 发现无法触发 Dropdown 的 clickOutside 事件,导致 Dropdown 无法关闭。
2842 0

热门文章

最新文章