iframe 的基本介绍与使用

本文详细介绍了HTMLiframe标签的使用,包括其基本语法、常用属性,以及如何通过contentWindow和contentDocument获取iframe内容,以及跨域通信中的postMessage方法。此外,还探讨了iframe在嵌入网页、多媒体、广告和加载外部内容方面的应用场景。
摘要由CSDN通过智能技术生成

一、介绍

iframe(内嵌框架)是 HTML 中一种用于将一个网页嵌入到另一个网页中的标签,它可以在一个页面中显示来自其他页面的内容。在网页中,使用<iframe>标签可以将一个网页嵌套在另一个网页中,实现网页间的互联互通。

二、语法

<iframe> 标签的基本用法如下:

<iframe src="URL"></iframe>

属性介绍

属性描述
src指定要在 iframe 中显示的文档的 URL
srcdoc在 iframe 中嵌入 HTML 代码而不是外部文档
name为 iframe 定义一个名称
allow 允许特定功能的列表,如 fullscreen,geolocation 等
allowfullscreen指定是否允许在 iframe 中使用全屏模式
allowpaymentrequest指定是否允许在 iframe 中进行支付请求
allowtransparency指定 iframe 是否可以是透明的
class为 iframe 定义一个或多个类名
style定义 iframe 的 CSS 样式
frameborder指定是否在 iframe 周围显示边框
width指定 iframe 的宽度
height指定 iframe 的高度
importance指定 iframe 对页面内容的重要性
loading指定 iframe 加载时的行为
referrerpolicy指定如何发送 referer HTTP 标头
sandbox启用 iframe 的沙盒模式,提高安全性,IE10+支持
title为 iframe 定义一个标题
scrolling指定 iframe 的滚动条,yes / no / auto

三、获取 iframe 里的内容

1、contentWindow & contentDocument

这两个 API 只是 DOM 节点提供的方式( 即 getELement 系列对象 )

let iframe = document.getElementById('demo');
// 获取 iframe 的 window 对象
let iwindow = iframe.contentWindow; 
// 获取 iframe 的 document 对象
let idoc = iframe.contentDocument; 
2、通过 iframe 的 name 属性 调用 iframe。
let iframe = window.frames['demo']
// 返回的就是 window 对象
3、在同域下,父页面可以获取子 iframe 的内容,子 iframe 同样也能操作父页面内容
// 获取上一级的 window 对象,如果还是 iframe 则是该 iframe 的 window 对象
window.parent   
// 获取最顶级容器的 window 对象,即,就是你打开页面的文档
window.top 
// 返回自身 window 的引用,可以理解 window === window.self    
window.self    

4、跨域通讯之 postMessage

 postMessage ( message, targetOrigin )

message:就是传递给 iframe 的内容, 通常是 string,

targetOrigin:“目标域“。URI(包括:协议、主机地址、端口号)

  • 若指定为”*“,则表示可以传递给任意窗口;
  • 指定为”/“,则表示和当前窗口为同源窗口;
  • 当为 URI 时,如果目标窗口的协议、主机地址或端口号这三者的任意一项不匹配 targetOrigin 提供的值,那么消息就不会发送

注意:可以将  targetOrigin 设置为“ * ” 号以匹配所有路径,但可能会有安全风险。谨慎使用。

<iframe src="http://jj.com" name="sendMessage"></iframe>

// 页面 A 
let ifr = window.frames['sendMessage'];
//使用 iframe 的 window 向 iframe 发送 message
ifr.postmessage('hello I'm a ', "http://jj.com");

// 页面 B 监听 message 事件
window.addEventListener('message', receiver, false);
function receiver(e) {
    if (e.origin == 'http://jj.com') {
        if (e.data == 'give u a message') {
            // 向原网页返回信息
            e.source.postMessage('hello I'm b', e.origin);  
        } else {
            alert(e.data);
        }
    }
}

当 targetOrigin 接受到 message 消息之后,会触发 message 事件。 message 提供的 event 对象上有3个重要的属性

  • data:postMessage 传递进来的值
  • origin:发送消息的文档所在的域
  • source:发送消息文档的 window 对象的代理,如果是来自同一个域,则该对象就是window,可以使用其所有方法,如果是不同的域,则 window 只能调用 postMessage() 方法返回信息

四、使用场景

iframe主要用途有嵌入其他网页、嵌入多媒体内容、创建广告位、加载外部内容等等。

  • 嵌入其他网页

最常见的用途是在一个网页中嵌入另一个网页的内容。这样可以将不同的网页组合在一起,使用户可以在一个页面中浏览多个相关的内容。例如,在一个新闻网站上,可以使用 iframe 将相关的新闻文章嵌入到一个页面中,使用户可以方便地在同一个页面上浏览不同的新闻。

  • 嵌入多媒体内容

除了网页,iframe 还可以用于嵌入多媒体内容,如视频或音频。通过将视频或音频文件的 URL 嵌入到 iframe 中,可以在网页上直接播放这些媒体内容。这种方式可以提供更好的用户体验,因为用户无需离开当前页面就可以观看视频或听音乐。

  • 创建广告位

iframe 还可以用于创建广告位。广告商可以将他们的广告内容嵌入到一个 iframe 中,然后将这个 iframe 嵌入到其他网站的页面中。这样,当用户访问这些网站时,他们将看到嵌入的广告内容。这种方式对于广告商来说非常方便,因为他们只需要提供一个 iframe 代码,而不需要与每个网站单独合作。

  • 加载外部内容

有时候,网页需要加载来自其他网站的内容。例如,一个网页可能需要显示来自社交媒体平台的最新帖子或来自其他网站的实时数据。通过使用 iframe,可以在网页中加载这些外部内容,并将其显示给用户,这种方式可以使网页更加丰富和动态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘子味的冰淇淋~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值