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

目录
相关文章
|
3月前
|
前端开发 Java Maven
iframe的简单使用
这篇文章通过一个简单的Maven项目示例,演示了如何使用`iframe`标签进行页面跳转和局部数据刷新,以及`a`标签的`target`属性与`iframe`的`name`属性如何配合使用来实现链接在`iframe`中的加载。
iframe的简单使用
|
5月前
|
安全 搜索推荐 UED
什么是iframe?请讲述一下iframe框架的优缺点?
什么是iframe?请讲述一下iframe框架的优缺点?
103 0
|
6月前
iframe几种常用代码片段
iframe几种常用代码片段
|
6月前
|
安全 测试技术 定位技术
html iframe 框架有哪些优缺点?
html iframe 框架有哪些优缺点?
79 1
|
11月前
|
安全
【JavaWeb学习】—iframe标签(四)
【JavaWeb学习】—iframe标签(四)
|
安全 定位技术
什么是iframe?请讲述一下iframe的优缺点?
什么是iframe?请讲述一下iframe的优缺点?
80 0
|
移动开发 前端开发 JavaScript
Web前端开发笔记——第二章 HTML语言 第九节 框架标签、脚本标签
Web前端开发笔记——第二章 HTML语言 第九节 框架标签、脚本标签
Web前端开发笔记——第二章 HTML语言 第九节 框架标签、脚本标签
|
Web App开发 移动开发 JavaScript