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

目录
相关文章
|
4月前
|
前端开发 Java Maven
iframe的简单使用
这篇文章通过一个简单的Maven项目示例,演示了如何使用`iframe`标签进行页面跳转和局部数据刷新,以及`a`标签的`target`属性与`iframe`的`name`属性如何配合使用来实现链接在`iframe`中的加载。
iframe的简单使用
|
7月前
iframe几种常用代码片段
iframe几种常用代码片段
|
6月前
|
安全 搜索推荐 UED
什么是iframe?请讲述一下iframe框架的优缺点?
什么是iframe?请讲述一下iframe框架的优缺点?
122 0
|
7月前
|
移动开发 前端开发 开发者
【专栏:HTML进阶篇】网页结构与语义化标签进阶
【4月更文挑战第30天】提升网页结构清晰度和无障碍访问性,有利于SEO。这些标签为屏幕阅读器提供额外上下文,简化CSS样式设计,避免无意义的&lt;div&gt;和&lt;span&gt;。正确使用语义化标签是现代网页开发的关键,能创造更优质、易访问和优化的Web体验。
89 0
|
7月前
|
开发框架 前端开发 搜索推荐
标题:【专栏:CSS进阶篇】CSS样式重置与框架:快速构建统一风格的网页
【4月更文挑战第30天】本文探讨了CSS样式重置和框架在确保网页跨浏览器一致性中的作用。样式重置通过消除默认样式差异实现一致外观,而CSS框架如Bootstrap提供预设样式和组件,加速开发并保证页面一致性。框架还有响应式设计和易于维护的优点,但也可能限制自定义和增加性能开销。选择使用哪种工具应根据项目需求、团队技能和设计复杂度来决定。开发者可结合使用两者以平衡灵活性和控制。
69 0
|
7月前
|
安全 测试技术 定位技术
html iframe 框架有哪些优缺点?
html iframe 框架有哪些优缺点?
95 1
|
前端开发 搜索推荐 定位技术
iframe 框架有哪些优缺点,怎么使用?
iframe 框架有哪些优缺点,怎么使用?
139 0
|
安全 定位技术
什么是iframe?请讲述一下iframe的优缺点?
什么是iframe?请讲述一下iframe的优缺点?
88 0
|
JavaScript 安全
原生JS路由,iframe框架
原生JS路由,iframe框架
|
JavaScript 前端开发 API
iframe框架,原生js路由
该标签规定一个内联框架。被用来在当前 HTML 文档中嵌入另一个文档。 可以把需要的文本放置在 和 之间
203 0