
* Some parts of this feature may have varying levels of support.
Learn moreSee full compatibilityReport feedbackHTML 元素
尝试一下
iframe {
border: 1px solid black;
width: 100%; /* takes precedence over the width set with the HTML width attribute */
}
每个嵌入的浏览上下文都有自己的文档并且允许 URL 导航。每个嵌入式浏览上下文的导航都会被线性嵌入到顶级浏览上下文的会话历史记录中。包含嵌入内容的浏览上下文称为父级浏览上下文。顶级浏览上下文(没有父级)通常是由 Window 对象表示的浏览器窗口。
警告:
页面上的每个
属性该元素包含全局属性。
allow
用于为
示例请参见 Permissions-Policy 中的 iframe。
备注:
通过 allow 属性指定的权限策略会在 Permissions-Policy 标头指定的策略基础上进一步地限制。它不会替换原有策略。
allowfullscreen
设置为 true 时,可以通过调用
备注:
这是一个历史遗留属性,已经被重新定义为 allow="fullscreen"。
allowpaymentrequest
已弃用
非标准
设置为 true 时,跨源的
备注:
这是一个历史遗留属性,已经被重新定义为 allow="payment"。
browsingtopics
实验性
非标准
一个布尔属性,如果存在,则指定当前用户选定的主题应该与
credentialless
实验性
设置为 true 可以将
csp
实验性
对嵌入的资源配置内容安全策略。查看 HTMLIFrameElement.csp 获取详情。
height
以 CSS 像素格式指定框架的高度。默认值为 150。
loading
表示浏览器应当何时加载 iframe:
eager
在页面加载时立即加载 iframe(默认值)。
lazy
推迟 iframe 的加载,直到达到浏览器定义的可视视口的计算距离。目的是在浏览器确定需要它前,避免占用获取框架所需的网络和存储带宽。这改进了在大多数使用场景中的性能表现,尤其是减少了页面的首次加载时间。
备注:
只有当 JavaScript 启用时才会推迟加载。这是一个反跟踪措施。
name
可定位嵌入的浏览上下文的名称。该名称可以用作 、
referrerpolicy
表示在获取 iframe 资源时发送哪个 referrer:
no-referrer
不发送 Referer 标头。
no-referrer-when-downgrade
向不受 TLS(HTTPS)保护的源发送请求时,不发送 Referer 标头。
origin
发送的 referrer 仅包含来源(referring)页面的源(origin):其协议、主机和端口。
origin-when-cross-origin
当 referrer 被发送到其他源时,其仅限于协议、主机和端口。同源的导航仍会包含路径。
same-origin
对于同源请求,发送 referrer;跨源请求不会包含 referrer 信息。
strict-origin
仅当被请求页面和来源页面具有相同的协议安全等级(HTTPS→HTTPS)时才发送 referrer,如果目标具有较低的安全等级(HTTPS→HTTP),则不会发送。
strict-origin-when-cross-origin(默认值)
当发起同源请求时,发送完整的 URL;当仅具有相同协议安全等级(HTTPS→HTTPS)时,只发送源;当目标具有较低的安全等级(HTTPS→HTTP)时,则不会发送此标头。
unsafe-url
始终在 referrer 标头中包含源和路径(但不包括片段标识符、密码和用户名)。这个值是不安全的,因为这样做会向不安全的源暴露受 TLS 保护的资源的源和路径。
sandbox
控制应用于嵌入在
allow-downloads
允许通过带有 download 属性的 或 元素或者通过导航来下载文件,无论是用户通过点击链接触发,还是在用户没有交互的情况下通过 JS 代码触发。
allow-forms
允许页面提交表单。如果没有使用该关键字,表单会正常显示,但是无法校验输入内容、发送数据到 Web 服务器或是关闭对话框。
allow-modals
允许页面通过 Window.alert()、Window.confirm()、Window.print() 和 Window.prompt() 打开模态窗口;无论有无该关键字,打开
allow-orientation-lock
允许资源锁定屏幕方向。
allow-pointer-lock
允许页面使用指针锁定 API。
allow-popups
允许弹窗(例如 Window.open()、target="_blank"、Window.showModalDialog())。如果没有使用该关键字,相应的功能会静默失败。
allow-popups-to-escape-sandbox
允许沙箱化的文档打开新的浏览上下文,并且新浏览上下文不会继承沙箱标记。例如,安全地沙箱化一个第三方的广告页面,而不会在广告链接到的新页面中启用相同的限制条件。如果不包含这个标记,重定向的页面、弹出窗口或新标签页将受到与源
allow-presentation
允许主文档控制是否允许 iframe 开启演示会话。
allow-same-origin
如果没有使用该关键字,资源将被视为来自一个特殊的源(始终使同源策略失败)。(可以阻止对数据存储/cookie 和一些 JavaScript API 的潜在访问)。
allow-scripts
允许页面运行脚本(但不能创建弹窗)。如果没有使用该关键字,则不允许该操作。
allow-storage-access-by-user-activation
实验性
允许
allow-top-navigation
允许资源导航顶级(即名称为 _top 的)浏览上下文。
allow-top-navigation-by-user-activation
允许资源导航顶级浏览上下文(但只能由用户手势启动)。
allow-top-navigation-to-custom-protocols
允许导航到浏览器内置的或由网站注册的非 http 协议页面。此特性也可以由 allow-popups 或 allow-top-navigation 关键词激活。
备注:
当被嵌入的文档与主页面同源时,强烈建议不要同时使用 allow-scripts 和 allow-same-origin。如果同时使用,嵌入的文档就可以删除 sandbox 属性——会使得安全性还不如不用 sandbox 属性。
如果攻击者可以在沙箱化的 iframe 之外展示内容,例如用户在新标签页中打开框架,那么沙箱化也就没有意义了。建议把这种内容放置到独立的来源中,以减小可能的损害。
备注:
在带有 sandbox 属性的
src
被嵌入的页面的 URL 地址。使用 about:blank 值可以嵌入一个遵从同源策略的空白页。还需要注意的是,在 Firefox(版本 65 及更高版本)、基于 Chromium 的浏览器、Safari/iOS 中使用代码移除 iframe 的 src 属性(例如通过 Element.removeAttribute())会导致 about:blank 被载入框架。
备注:
在解析任何相对 URL(例如锚点链接)时,about:blank 页面会使用嵌入的文档的 URL 作为它的基准 URL。
srcdoc
要嵌入的内联 HTML,会覆盖 src 属性。其内容应遵循完整的 HTML 文档的语法(包含文档类型指令、、
标签等,虽然绝大多数标签可以被省略,仅保留主体内容)。该文档会以 about:srcdoc 作为其位置。如果浏览器不支持 srcdoc 属性,其会回退到 src 属性的 URL。备注:
在解析任何相对 URL(例如锚点链接)时,about:srcdoc 页面会使用嵌入的文档的 URL 作为它的基准 URL。
width
框架的宽度(以 CSS 像素为单位)。默认值是 300。
已弃用的属性下面这些属性已被弃用,并且可能不再被所有的用户代理支持。你应避免在新的内容中使用它们,也应尽量从已有的内容中移除它们。
align
已弃用
此元素相对于周围上下文的对齐方式。
frameborder
已弃用
值为 1(默认值)时,显示此框架的边框。值为 0 时移除框架的边框。但是请使用 CSS 属性 border 来控制
longdesc
已弃用
表示框架内容的长描述的 URL。由于广泛的误用,该属性对于无图形界面的浏览器不起作用。
marginheight
已弃用
框架的内容距其上边框与下边框的距离(以像素为单位)。
marginwidth
已弃用
框架的内容距其左边框和右边框的距离(以像素为单位)。
scrolling
已弃用
指示浏览器是否应为框架提供滚动条:
auto
仅当框架的内容超出框架的尺寸时显示滚动条。
yes
始终显示滚动条。
no
从不显示滚动条。
脚本内联框架,就像 元素一样,会被包含在 window.frames 伪数组中。
有了 DOM HTMLIFrameElement 对象,脚本可以通过 contentWindow 属性访问内联框架的 window 对象。contentDocument 属性引用了
在框架内部,脚本可以通过 window.parent 获取父窗口的引用。
脚本访问框架内容必须遵守同源策略。脚本无法访问非同源的 window 对象的几乎所有属性(包括框架中的脚本访问框架的父级文档的情况)。跨源通信可以通过 Window.postMessage() 来实现。
定位和缩放作为一个可替换元素,可以使用 object-position 来调整
备注:
object-fit 属性对
error 和 load 事件行为
无障碍使用 iframe 的 title 属性来标识框架的主要内容,这样可以极大方便使用辅助技术(例如屏幕阅读器)浏览网页的人。框架的标题应该清楚地描述框架的内容,例如:
html title="鳄梨的维基百科页面" src="https://zh.wikipedia.org/wiki/鳄梨">
如果没有标题,他们就只能浏览每个
示例一个简单的
HTML
html src="https://example.org" title="iframe 示例 1" width="400" height="300">
结果
在
请注意在使用 srcdoc 时,在嵌入内容中的任何相对 URL 都将会相对于嵌入该内容的页面的 URL 进行解析,如果你想要使用锚链接指向嵌入内容,你需要明确使用 about:srcdoc 作为基准 URL。
HTML
html
sandbox srcdoc=" 有两种使用 iframe
元素的方法:
嵌入来自另一个页面的内容
使用 src
属性来指定要嵌入的页面的 URL:
<iframe src="https://example.org"></iframe>
嵌入用户生成的内容
使用 srcdoc
属性来指定要嵌入的内容。这篇文章本身就是一个例子!
"
width="500"
height="250"
>
在使用 srcdoc 时,如何进行转义:
首先,编写 HTML 内容,像正常 HTML 一样转义需要转义字符(例如 <、>、& 等)。
在 srcdoc 属性中 < 和 < 代表相同的字符。因此,在 HTML 中要将它们修改为实际需要的转义序列,将所有的 & 替换为 &。例如 < 修改为 <,& 修改为 &。
替换所有的双引号(")为 " 以防止 srcdoc 属性被提前终止。(如果你使用 ',那么你应该将 ' 替换为 ')。这个步骤在上一个步骤后执行,所以 " 不会变成 "。
结果
技术概要
内容分类
流式内容、短语内容、嵌入内容、交互内容、可感知内容。
允许的内容
无。
标签省略
不允许,开始标签和结束标签都不能省略。
允许的父元素
接受嵌入内容的任何元素
隐含的 ARIA 角色
没有对应的角色
允许的 ARIA 角色
application、document、img、none、presentation
DOM 接口
HTMLIFrameElement
规范SpecificationHTML # the-iframe-element浏览器兼容性参见
CSP:frame-ancestors
隐私、权限和信息安全