iframe框架及优缺点
iframe框架及优缺点
HTML5不再支持使用frame,关于frame与iframe的区别,可以参阅  iframe与frame的区别
基本使用
src:规定在iframe中显示的文档的URL。frameborder:规定是否显示框架周围的边框。scrolling:规定是否在 iframe 中显示滚动条。width:规定iframe的宽度,建议使用CSS替代。height:规定iframe的高度,建议使用CSS替代。sandbox:启用一系列对iframe中内容的额外限制。marginwidth:定义iframe的左侧和右侧的边距。marginheight:定义iframe的顶部和底部的边距。srcdoc:规定在iframe中显示的页面的HTML内容。align:规定如何根据周围的元素来对齐此框架,建议使用样式替代。
使用场景
加载其他域的网页
<iframe>是允许跨域请求资源的,但是不能够修改,由此可以在网页中嵌套其他网页,如需要跨域通信的话,需要考虑document.domain、window.name、window.postMessage。
典型系统结构
典型的系统结构,左侧是功能树,上部为个人信息,右侧就是实际功能,使用iframe将功能单独分离出来,当然也可以使用vue和react进行实现。
实现Ajax
可以使用iframe进行实现异步请求发送,来模拟Ajax的请求操作,Ajax的异步请求完成操作为XHR.readyState === 4执行callback,iframe使用iframe.onload执行callback,还可以实现一个轮询长连接。
加载广告
广告是与原文无关的,假如硬编码进去,会造成网页布局的紊乱,而且这样势必需要引入额外的css和js文件,极大的降低了网页的安全性,使用iframe便可以解决这些问题。
提交表单
可以使用iframe提交表单来避免整个页面的刷新,还可以实现无刷新文件上传的操作。
优缺点
优点
- 可以跨域请求其他网站,并将网站完整展示出来
 - 典型系统结构可以提高代码的复用性
 - 创建一个全新的独立的宿主环境,可以隔离或者访问原生接口及对象
 - 模块分离,若多个页面引用同一个
iframe,则便于修改操作 - 实现广告展示的一个解决方案
 - 若需要刷新
iframe则只需要刷新框架内,不需要刷新整个页面 
缺点
iframes阻塞页面加载,影响网页加载速度,iframe加载完毕后才会触发window.onload事件,动态设置src可解决这个问题。- 加载了新页面,增加了
css与js文件的请求,即额外增加了HTTP请求,增加了服务器负担。 - 有时
iframe由于页面挤占空间的原因出现滚动条,造成布局混乱。 - 不利于
SEO,搜索引擎的爬虫无法解读iframe的页面。 - 有些小型的移动设备如手机等无法完全显示框架,兼容性较差。
 iframe与主页面是共享链接池的,若iframe加载时用光了链接池,则会造成主页面加载阻塞。
参考
https://www.zhihu.com/question/20653055
https://www.cnblogs.com/hq233/p/9849939.html
https://blog.csdn.net/baxiadsy_csdn/article/details/86245809
												
											iframe框架及优缺点的更多相关文章
- ASP.NET 页面禁止被 iframe 框架引用
		
两个站点: a.sample.com b.sample.com a.sample.com 站点中的一段示例 JS 代码: var iframe = document.createElement(&qu ...
 - 当session过期后自动跳转到登陆页而且会跳出iframe框架
		
写项目时在重定向后一直存在一个问题就是重定向后登陆页面会出现在跳出的子框架里.
 - session失效后,登录页面嵌入iframe框架
		
在登录页面的onload方法中加入以下代码解决: //防止登录页面嵌入iframe框架 if (top.location != self.location){ top.location=self.lo ...
 - javascript获取iframe框架中页面document对象,获取子页面里面的内容,iframe获取父页面的元素,
		
javascript获取iframe框架中,加载的页面document对象 因为浏览器安全限制,对跨域访问的页面,其document对象无法读取.设置属性 function getDocument(i ...
 - 动端逐渐出了许多的移动端的框架,比如Sencha Touch、JQTouch、Jquery-moblie、jqMobi等等。这些框架都有优缺点,不同的框架应用在不同的项目中。现简单阐述一下各框架的优缺点:
		
移动前端工作的那些事---前端制作之微信小技巧篇 (2013-11-15 15:20) 转载▼ 标签: it css3/javascript html5 webapp 手机网站搭建 分类: 前端制 ...
 - js实现网页防止被iframe框架嵌套及几种location.href的区别
		
首先我们了解一下几种location.href的区别简单的说:几种location.href的区别js实现网页被iframe框架功能,感兴趣的朋友可以了解下 首先我们了解一下:window.locat ...
 - javascript_获取iframe框架中元素节点的属性值
		
1. DOM:文档对象模型 [window 对象] 它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口. [document 对象] 该对象是window和frames对象的一个属性,是显示于窗口 ...
 - iframe框架自适应高度 uncanght SecurityError: Blocked a frame with origin "null" from accessing a frame ....
		
来源于crm项目的contact/edit.html 一.背景是这样的 最近在做crm系统的前端页面,有一个页面呢,点击“查看全部信息”时会弹出,这个弹窗里面又有分页导航,分页不是使用ajax 异步刷 ...
 - 在Iframe框架下如何跳转到登录界面
		
在Iframe框架下跳转到登录界面总会跳到子界面中,类似于下图 试用Respon.Redirect()不行, 用Js函数,但我跳转代码都是写在cs文件中的,用Respose.write(),js函数根 ...
 
随机推荐
- DOS命令编译JAVA程序
			
上篇文章给大家写了怎么安装JDK配置,现在这篇文章我们就来学习下怎么在DOS命令下编译JAVA程序,以后没编译器都可以直接编译啦(嘻嘻!) 我这里就用永远的 “Hello wrold!”来演示下吧. ...
 - 吴裕雄--天生自然KITTEN编程:一箭穿心
 - 8.2.2 使用Java8增强的Iterator遍历集合元素
			
8.2.2 使用Java 8增强的Iterator遍历集合元素 Iterator接口方法 程序示例 Iterator仅用于遍历集合 Iterator必须依附于Collection对象 修改迭代变量的值 ...
 - 涉嫌垄断的App Store,到底做了什么让开发者暴怒
			
 Store,到底做了什么让开发者暴怒" title="涉嫌垄断的App Store,到底做了什么让开发者暴怒"> 什么行业最赚钱?不是你想象中的餐饮.互联网. ...
 - 「知乎」对中国用户而言,Pure Android 是否比 MIUI 或 Flyme 体验更好? - Donnie的博客
			
这篇文章转载自我在知乎上的回答 哎呀-不要站队嘛.其实这是一个很有意思的题目,让我们一点点来看 哦对,谢妖-.本人是Nexus 5用户,系统当然是Pure Android KitKat啦(臭谷粉!点D ...
 - docker save和load将本地镜像上传AWS
			
今天在AWS云主机上部署Grafana,发现无法使用私有仓库,于是,尝试了下docker save和docker load.着实很好用,简单记录下: docker save用法: Usage: doc ...
 - 从0开发3D引擎(十):使用领域驱动设计,从最小3D程序中提炼引擎(上)
			
目录 上一篇博文 下一篇博文 前置知识 回顾上文 最小3D程序完整代码地址 通用语言 将会在本文解决的不足之处 本文流程 解释本文使用的领域驱动设计的一些概念 本文的领域驱动设计选型 设计 引擎名 识 ...
 - Java和C++引用的区别
			
Java的引用实际上是对指针的一个封装. C++的引用是变量的一个别名. Java的定义出来的变量(除了基本类型)其实就是一个引用,指向真正的对象. C++可以通过将引用传入函数,在函数内修改所引用的 ...
 - 【WPF学习】第五十六章 基于帧的动画
			
除基于属性的动画系统外,WPF提供了一种创建基于帧的动画的方法,这种方法只使用代码.需要做的全部工作是响应静态的CompositionTarge.Rendering事件,触发该事件是为了给每帧获取内容 ...
 - CKEditor4.7怎样实现上传图片,浏览服务器(无需ckfinder),nodejs图片管理,字体居中,图片居中(超详细)
			
首先是下载CKEditor,下载地址:http://ckeditor.com/download 选择里面的Customize自定义,如图 然后进入配置界面,第一个choose preset一般就选st ...