<iframe>:內聯框架元素
試一試
屬性
此元素包括 全域性屬性。
allow-
為
<iframe>指定 許可權策略。該策略根據請求的來源定義哪些功能可用於<iframe>(例如,訪問麥克風、攝像頭、電池、網路共享等)。請參閱
Permissions-Policy主題中的 iframes 以獲取示例。注意:由
allow屬性指定的許可權策略在Permissions-Policy標頭中指定的策略之上實施了進一步的限制。它不會替換它。 allowfullscreen-
如果
<iframe>可以透過呼叫requestFullscreen()方法啟用全屏模式,則將其設定為true。注意:此屬性被認為是舊版屬性,並重新定義為
allow="fullscreen"。 allowpaymentrequest已棄用 非標準-
如果應允許跨源
<iframe>呼叫 支付請求 API,則將其設定為true。注意:此屬性被認為是舊版屬性,並重新定義為
allow="payment"。 browsingtopics實驗性 非標準-
如果存在,則為布林屬性,指定應將當前使用者的選定主題與
<iframe>源的請求一起傳送。有關更多詳細資訊,請參閱 使用主題 API。 credentialless實驗性-
設定為
true以使<iframe>無憑據,這意味著其內容將在新的臨時上下文中載入。它無法訪問與其來源關聯的網路、cookie 和儲存資料。它使用一個新的、特定於頂級文件生命週期的上下文。作為回報,可以解除Cross-Origin-Embedder-Policy(COEP) 嵌入規則,因此設定了 COEP 的文件可以嵌入不具備此規則的第三方文件。有關更多詳細資訊,請參閱 IFrame 無憑據。 csp實驗性-
對嵌入資源實施的 內容安全策略。有關詳細資訊,請參閱
HTMLIFrameElement.csp。 height-
框架的高度,以 CSS 畫素為單位。預設值為
150。 載入-
指示瀏覽器何時載入 iframe
名稱-
嵌入式瀏覽上下文的可定位名稱。這可以在
<a>、<form>或<base>元素的target屬性中使用;<input>或<button>元素的formtarget屬性中;或window.open()方法中的windowName引數中。 referrerpolicy-
指示在獲取框架資源時傳送哪個referrer
no-referrer-
不會發送
Referer標頭。 no-referrer-when-downgradeoriginorigin-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 保護資源的源和路徑洩漏到不安全的源。
沙箱-
控制應用於嵌入在
<iframe>中的內容的限制。屬性的值可以為空以應用所有限制,或者使用空格分隔的標記來解除特定限制allow-downloads-
允許透過具有 download 屬性的
<a>或<area>元素下載檔案,以及透過導致檔案下載的導航。無論使用者是否單擊連結,或者 JS 程式碼在沒有使用者互動的情況下啟動它,此功能都有效。 allow-forms-
允許頁面提交表單。如果不使用此關鍵字,表單將正常顯示,但提交表單不會觸發輸入驗證、將資料傳送到 Web 伺服器或關閉對話方塊。
allow-modals-
允許頁面透過
Window.alert()、Window.confirm()、Window.print()和Window.prompt()開啟模式視窗,同時無論此關鍵字如何,都允許開啟<dialog>。它還允許頁面接收BeforeUnloadEvent事件。 allow-orientation-lock-
允許資源鎖定螢幕方向。
allow-pointer-lock-
允許頁面使用 指標鎖定 API。
allow-popups-
允許彈出視窗(例如來自
Window.open()、target="_blank"、Window.showModalDialog())。如果不使用此關鍵字,該功能將靜默失敗。 allow-popups-to-escape-sandbox-
允許沙箱文件開啟新的瀏覽上下文,而不會強制其使用沙箱標誌。例如,這將允許安全地沙箱化第三方廣告,而不會強制對廣告連結到的頁面施加相同的限制。如果不包含此標誌,重定向的頁面、彈出視窗或新標籤頁將受到與原始
<iframe>相同的沙箱限制。 allow-presentation-
允許嵌入者控制 iframe 是否可以啟動簡報會話。
allow-same-origin-
如果不使用此標記,則該資源將被視為來自一個特殊的源,該源始終會使同源策略失敗(可能會阻止訪問資料儲存/cookie和某些 JavaScript API)。
allow-scripts-
允許頁面執行指令碼(但不建立彈出視窗)。如果不使用此關鍵字,則不允許此操作。
allow-storage-access-by-user-activation實驗性的-
允許在
<iframe>中載入的文件使用儲存訪問 API請求訪問未分割槽的 cookie。 -
允許資源導航頂級瀏覽上下文(名為
_top的上下文)。 -
允許資源導航頂級瀏覽上下文,但僅在由使用者手勢啟動時才允許。
-
允許導航到瀏覽器內建或網站註冊的非
http協議。此功能也由allow-popups或allow-top-navigation關鍵字啟用。
注意
- 當嵌入文件與嵌入頁面具有相同的源時,強烈建議不要同時使用
allow-scripts和allow-same-origin,因為這會讓嵌入文件刪除sandbox屬性——使其安全性不高於根本不使用sandbox屬性。 - 如果攻擊者可以在沙箱
iframe之外顯示內容(例如,如果檢視者在新標籤頁中開啟框架),則沙箱將毫無用處。此類內容也應來自單獨的源以限制潛在的損害。
注意:從具有
sandbox屬性的<iframe>內的嵌入頁面重定向使用者、開啟彈出視窗或開啟新標籤頁時,新的瀏覽上下文將受到相同的sandbox限制。這可能會導致問題——例如,如果嵌入在沒有設定sandbox="allow-forms"或sandbox="allow-popups-to-escape-sandbox"屬性的<iframe>中的頁面在新標籤頁中開啟一個新站點,則在新瀏覽上下文中的表單提交將靜默失敗。 src-
要嵌入的頁面的 URL。使用
about:blank值來嵌入符合同源策略的空頁面。另請注意,以程式設計方式刪除<iframe>的 src 屬性(例如,透過Element.removeAttribute())會導致 Firefox(從版本 65 開始)、基於 Chromium 的瀏覽器和 Safari/iOS 在框架中載入about:blank。注意:
about:blank頁面在解析任何相對 URL(例如錨鏈接)時,使用嵌入文件的 URL 作為其基本 URL。 srcdoc-
要嵌入的內聯 HTML,覆蓋
src屬性。其內容應遵循完整 HTML 文件的語法,包括 doctype 指令、<html>、<body>標記等,儘管其中大多數可以省略,只留下主體內容。此文件將具有about:srcdoc作為其位置。如果瀏覽器不支援srcdoc屬性,它將回退到src屬性中的 URL。注意:
about:srcdoc頁面在解析任何相對 URL(例如錨鏈接)時,使用嵌入文件的 URL 作為其基本 URL。 width-
框架的寬度,以 CSS 畫素為單位。預設值為
300。
已棄用的屬性
這些屬性已棄用,可能不再受所有使用者代理支援。您不應在新內容中使用它們,並嘗試從現有內容中刪除它們。
align已棄用-
此元素相對於周圍上下文的對齊方式。
frameborder已棄用-
值
1(預設值)會在該框架周圍繪製邊框。值0會刪除該框架周圍的邊框,但您應該改為使用 CSS 屬性border來控制<iframe>邊框。 longdesc已棄用-
框架內容的詳細描述的 URL。由於普遍濫用,這對非視覺瀏覽器沒有幫助。
marginheight已棄用-
框架內容與其頂部和底部邊框之間的空間量(以畫素為單位)。
marginwidth已棄用-
框架內容與其左側和右側邊框之間的空間量(以畫素為單位)。
scrolling已棄用-
指示瀏覽器何時應為框架提供捲軸
指令碼
內聯框架(如 <frame> 元素)包含在 window.frames 偽陣列中。
使用 DOM HTMLIFrameElement 物件,指令碼可以透過 contentWindow 屬性訪問已加框架資源的 window 物件。contentDocument 屬性引用 <iframe> 內部的 document,與 contentWindow.document 相同。
從框架內部,指令碼可以使用 window.parent 獲取對其父視窗的引用。
對框架內容的指令碼訪問受同源策略的約束。如果指令碼是從不同的源載入的,則指令碼無法訪問其他 window 物件中的大多數屬性,包括框架內的指令碼訪問框架的父級。跨源通訊可以使用 Window.postMessage() 來實現。
定位和縮放
作為替換元素,<iframe> 允許使用 object-position 屬性調整嵌入文件在其框內的位置。
注意:object-fit 屬性對 <iframe> 元素無效。
error 和 load 事件行為
無障礙訪問
使用輔助技術(如螢幕閱讀器)導航的使用者可以使用 <iframe> 上的title 屬性為其內容新增標籤。標題的值應簡潔地描述嵌入的內容
<iframe
title="Wikipedia page for Avocados"
src="https://en.wikipedia.org/wiki/Avocado"></iframe>
如果沒有此標題,他們必須導航到 <iframe> 中才能確定其嵌入的內容是什麼。這種上下文切換可能會令人困惑且耗時,尤其是在頁面包含多個 <iframe> 和/或嵌入包含影片或音訊等互動式內容的情況下。
示例
一個簡單的 <iframe>
此示例將 https://example.org 上的頁面嵌入到 iframe 中。這是 iframe 的常見用例:嵌入來自另一個站點的內容。例如,即時示例本身以及頂部的 試一試 示例都是來自另一個 MDN 站點的 <iframe> 嵌入。
HTML
<iframe
src="https://example.org"
title="iframe Example 1"
width="400"
height="300">
</iframe>
結果
在 <iframe> 中嵌入原始碼
此示例直接在 iframe 中呈現原始碼。這可以用作在顯示使用者生成的內容時(與 sandbox 屬性結合使用)防止指令碼注入的技術。
請注意,當使用 srcdoc 時,嵌入內容中的任何相對 URL 將相對於嵌入頁面的 URL 解析。如果要使用指向嵌入內容中的位置的錨鏈接,則需要顯式指定 about:srcdoc 作為基本 URL。
HTML
<article>
<footer>Nine minutes ago, <i>jc</i> wrote:</footer>
<iframe
sandbox
srcdoc="<p>There are two ways to use the <code>iframe</code> element:</p>
<ol>
<li><a href="about:srcdoc#embed_another">To embed content from another page</a></li>
<li><a href="about:srcdoc#embed_user">To embed user-generated content</a></li>
</ol>
<h2 id="embed_another">Embedding content from another page</h2>
<p>Use the <code>src</code> attribute to specify the URL of the page to embed:</p>
<pre><code>&lt;iframe src="https://example.org"&gt;&lt;/iframe&gt;</code></pre>
<h2 id="embed_user">Embedding user-generated content</h2>
<p>Use the <code>srcdoc</code> attribute to specify the content to embed. This post is already an example!</p>
"
width="500"
height="250"
></iframe>
</article>
以下是如何在使用 srcdoc 時編寫轉義序列
- 首先,編寫 HTML,轉義您在普通 HTML 文件中轉義的任何內容(例如
<、>、&等)。 <和<在srcdoc屬性中表示完全相同的字元。因此,要使其成為 HTML 文件中的實際轉義序列,請將任何與號 (&) 替換為&。例如,<變為&lt;,&變為&amp;。- 將任何雙引號 (
") 替換為"以防止srcdoc屬性過早終止(如果使用',則應將'替換為')。此步驟發生在上一步驟之後,因此在此步驟中生成的"不會變為&quot;。
結果
技術摘要
| 內容類別 | 流內容、短語內容、嵌入內容、互動式內容、可感知內容。 |
|---|---|
| 允許的內容 | 無。 |
| 標記省略 | 無,起始和結束標記都是必需的。 |
| 允許的父級 | 任何接受嵌入內容的元素。 |
| 隱式 ARIA 角色 | 沒有相應的角色 |
| 允許的 ARIA 角色 |
application、document、img、none、presentation |
| DOM 介面 | HTMLIFrameElement |
規範
| 規範 |
|---|
| HTML 標準 # the-iframe-element |
瀏覽器相容性
BCD 表格僅在瀏覽器中載入