iframe简要介绍

简介: iframe简要介绍

iframe

专业来说iframe会创建包含另外一个文档的内联框架

通俗来说iframe可以将另外一个网页的内容嵌入在自己网页中

咱们来看看它的优点

可以直接引用其它页面展示在自己网站内容,节省开发和维护成本

咱们来看看它的缺点

1、页面中如果存在iframe元素,那么只有等待iframe元素及其内部的元素都加载完毕后,页面的onload事件才会触发,因此会造成onload事件的阻塞。如果iframe不是你页面主要显示的内容,那么请当页面其它元素加载完成,也就是onload事件执行的时候动态为iframe添加src

2、搜索引擎无法识别iframe中的内容,不利于网页的SEO

3、iframe和主页面共享连接池,而浏览器对相同域的连接有限制,会影响页面的并行加载

4、浏览器的后退前进对iframe页面交互无效

iframe元素的基本属性和事件

DOM结构如下:

<iframe id="xxx" name="xxx" width="200" height="200" src="xxx.com" sandbox="xxxx" >

name - 用于定位嵌入的浏览上下文的名称

width - iframe元素的宽度,默认值300

height - iframe元素的高度,默认值150

src - 请求资源地址

sandbox - 沙箱属性,ie9及以下不支持  

还有其它的属性,可以参考MDN进行使用

常用的事件比如onload事件,在iframe元素加载完成后触发

document.getElementById('xxx').onload = function() {  }

动态新增iframe标签

var iframeEle = docuemnt.createElement('iframe');

iframeEle.id = 'xxx';

iframeEle.style = 'width: 200px; height: 200px; border: 0;';

iframeEle.src = 'xxx.com';

document.body.append(iframeEle);

父子通信

1、父页面和iframe的src地址需要是同源,才能进行数据交互

2、根域名相同,二级域名不同,可以通过设置document.domain为同一个根域名来进行跨域交互

3、跨域交互,需要用到window.postMessage方法来进行数据交互


同源场景下:

父页面获取子页面window对象

document.getElementById('xxx').contentWindow

window.frames[x]

子页面获取父页面window对象

window.parent

根域名相同,二级域名不同

iframe页面(a.xxx.com)
    document.domain = 'xxx.com'
    
父页面(b.xxx.com)
    document.domain = 'xxx.com'
    

跨域交互

发送方进行消息发送,接收方通过监听message来获取发送内容

iframe页面(a.xxx.com)
    window.addEventListener('message', function(event) { 
        
        event.data  - 发送方传递的数据对象
        
        event.origin - 发送发的orgin
        
        event.source  - 发送方的window对象引用
        
     }, false)

父页面(b.yyy.com)

    document.getElementById('xxx').contentWindow.postMessage(message, targetOrgin, [transfer]);
    
    message - 发送的信息内容
    
    targetOrgin - 指定哪些窗口能收到此消息,所有源可设置为*
    
    transfer - 该参数可选,可忽略
    

注意事项

  • iframe内部使用window.history.go(xx)和window.history.back()和在父页面使用是一样的效果
  • iframe内部使用window.location.href不会改变浏览器的url,但是会新增一条历史记录
  • iframe的每次重载,都会引起父页面onload事件的触发

参考文档

MDN - iframe

思否 - Iframe简单探索以及Iframe跨域处理 - maxxz

目录
相关文章
|
JavaScript
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
1122 0
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
|
1月前
|
Java 测试技术 Python
如何实现对iframe的自动化测试,一篇文章告诉你
如何实现对iframe的自动化测试,一篇文章告诉你
15 0
|
1月前
|
XML 前端开发 JavaScript
深入探究iframe:网页嵌入的魔法盒子(下)
深入探究iframe:网页嵌入的魔法盒子(下)
|
1月前
|
JavaScript 前端开发 安全
深入探究iframe:网页嵌入的魔法盒子(上)
深入探究iframe:网页嵌入的魔法盒子(上)
|
2月前
|
前端开发
SAP UI5 应用如何使用 iframe 嵌入其他 HTML 页面试读版
SAP UI5 应用如何使用 iframe 嵌入其他 HTML 页面试读版
31 0
|
4月前
|
安全 测试技术 定位技术
html iframe 框架有哪些优缺点?
html iframe 框架有哪些优缺点?
47 1
|
5月前
|
安全 搜索推荐 测试技术
什么是iframe?请讲述一下iframe框架的优缺点?
什么是iframe?请讲述一下iframe框架的优缺点?
51 0
|
5月前
|
安全 定位技术
什么是iframe?请讲述一下iframe的优缺点?
什么是iframe?请讲述一下iframe的优缺点?
20 0
|
应用服务中间件 Apache nginx
iframe 嵌入页面?才不是那么轻轻松松!
iframe 嵌入页面?才不是那么轻轻松松!
1035 0
|
Web App开发 XML SQL
《图解HTML》第二节 浏览器的工作原理简介
由第一节 浏览器简介中我们知道,浏览器有很多种,由不同的商家生产,功能上也有所不同。那么浏览器是如何渲染HTML、CSS、JS成一个漂亮且有用的网页的呢?
158 0
《图解HTML》第二节 浏览器的工作原理简介

热门文章

最新文章