首要要做配置操作,配置两个域名,我这里使用的是Apache。附件中的demo1和demo2
iframe的一些属性介绍:
属性
值
描述
align
left
right
top
middle
bottom
不赞成使用。请使用样式代替。
规定如何根据周围的元素来对齐此框架。
frameborder
1
规定是否显示框架周围的边框。
height
pixels
%
规定 iframe 的高度。
longdesc
URL
规定一个页面,该页面包含了有关 iframe 的较长描述。
marginheight
定义 iframe 的顶部和底部的边距
marginwidth
定义 iframe 的左侧和右侧的边距。
name
frame_name
规定 iframe 的名称
sandbox
""
allow-forms
allow-same-origin
allow-scripts
allow-top-navigation
启用一系列对 <iframe> 中内容的额外限制。
scrolling
yes
no
auto
规定是否在 iframe 中显示滚动条。
seamless
规定 <iframe> 看上去像是包含文档的一部分。
src
规定在 iframe 中显示的文档的 URL。
srcdoc
HTML_code
规定在 <iframe> 中显示的页面的 HTML 内容。
width
定义 iframe 的宽度。
这个上传我服务器端使用的是PHP代码。
使用iframe上传的关键点是target="iframeUpload",这个属性的设置。action.php中的代码如下:
同域的情况下:
网络中的方法一:直接用onload函数获取iframe中的内容高度,如果页面载入一次以后,高度不变,这招是挺好用的,但是我在firefox与IE中,表现不理想,如图,并没有完全的将页面显示,chrome和safrai的表现不错。
后面发现,如果在iFrame1.document.body.scrollHeight的后面在加上20的话,iframe也是能完全展现出来的,这个应该是受到了我autoheight.html这个页面里的CSS影响,
autoheight.html中的页面代码是这样的:
为了验证我的猜想,我把padding给去除掉,还是用原先的代码onload="this.height=iFrame1.document.body.scrollHeight",但事实与我的猜想完全不同
这句是用来获取iframe的window对象。
意思就是一些浏览器可以通过iframeElement.contentDocument.parentWindow获得iframe的window对象。经过测试发只有IE9与IE8是根据iframe.contentDocument.parentWindow来获取的,其他firefox、chrome、safrai、IE6、IE7都是根据frame.contentWindow获取的
这句话就是在获取iframe的高度了。
body是DOM对象里的body子节点,即 <body> 标签;
documentElement 是整个节点树的根节点root,即<html> 标签;
刚刚上一个方法由于用的是body.scrollHeight导致了各个浏览器的解释不同,引起了显示的不一致。经测试发现使用documentElement.scrollHeight后,都能正确显示。
异域的情况下:
跨域的时候,由于js的同源策略,父页面内的js不能获取到iframe页面的高度。需要一个页面来做代理。总共有三张页面,
index.html中代码:
iframe.html中代码:
agent.html中代码:
网络方法一:这是一种通过第三张页面来跨域执行函数,一种代理的感觉
iFrame4与iframeD分别为index_cross.html与cross_domain1.html页面上面的iframe的id。
这是一种非常优雅的方式,但是是用url的方式在传递参数,大小被受到了限制,如果数据量大的话,是会有问题的。
index_cross.html中代码:
cross_domain1.html中代码:
cross_domain2.html中代码:
成功后出现的提示信息
网络方法二:
1) 支持HTML5的浏览器可以使用postMessage
IE8、IE9、firefox、chrome和safrai可用postMessage函数
index_cross.html中代码:
post_message.html中代码:
2) IE6、IE7可以用navigator对象的跨大域漏洞
navigator.html中代码:
源码可以在这里下载:
<a href="http://files.cnblogs.com/strick/iframe.rar">iframe.rar</a>
参考资料:
本文转自 咖啡机(K.F.J) 博客园博客,原文链接:http://www.cnblogs.com/strick/p/3814872.html,如需转载请自行联系原作者