iframe简介
iframe 是html元素,用于在网页中内嵌另一个网页
iframe默认有一个宽高,存在边界
iframe是一个行内块级元素,可以通过display修改
虽然iframe现在不推荐大量使用,但是某些时候迫不得已,比如。。。
iframe的优点隔离上下文
缺点影响网页速度 不利于SEO
iframe元素属性
src:指定内联网页的地址
frameborder:iframe默认有个边界,可以设置frameborder为0清除边界
width,height:控制iframe的宽高
name:框架的名称
scrolling: 是否滚动,yes,no,auto
iframe互相操作
在父级使用window.frames[name]可以获取子iframe的window对象,相应的可以获取document对象,从而对子iframe进行dom操作
在子iframe想要操作父元素的iframe,在子级window.parent来获取父级元素的window对象,从而获取document来操作dom。
window.parent.document.getElementById('xxx')
iframe之间的通信:
window.postMessage(data, origin)
data:待发送的数据
origin:是发送的地址,为‘*’表示无限制,该参数必传,否则会报错
接收信息:
window.addEventListener("message", function(event) {
console.log(event.data)
}}, false);
iframe强制刷新
document.getElementById(iframe的id).contentWindow.location.reload(true)
document.getElementById(iframe的id).src=src
注意事项
获取子元素的document时要确保子元素所有dom元素已经挂在完毕,因此在原生的写法时,必须写在window的onload事件中。
iframe的优点:
- iframe能够原封不动的把嵌入的网页展现出来。
- 如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
- 网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,可以增加代码的可重用。
- 如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决。
iframe的缺点:
- iframe框架结构有时会让人感到迷惑,如果框架个数多的话,可能会出现上下、左右滚动条,会分散访问者的注意力,用户体验度差。
- 代码复杂,无法被一些搜索引擎索引到,这一点很关键,现在的搜索引擎爬虫还不能很好的处理iframe中的内容,所以使用iframe会不利于搜索引擎优化。
- 很多的移动设备(PDA 手机)无法完全显示框架,设备兼容性差。
- iframe框架页面会增加服务器的http请求,对于大型网站是不可取的