<fencedframe>:Fenced Frame 元素

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

<fencedframe> HTML 元素代表一個巢狀的瀏覽上下文,將另一個 HTML 頁面嵌入到當前頁面中。<fencedframe> 在形式和功能上與<iframe> 元素非常相似,只是:

  • <fencedframe> 內容及其嵌入站點之間的通訊受到限制。
  • <fencedframe> 可以訪問跨站點資料,但僅限於在非常特定的一組受控情況下,以保護使用者隱私。
  • <fencedframe> 無法透過常規指令碼進行操作或訪問其資料(例如讀取或設定源 URL)。<fencedframe> 內容只能透過特定 API 嵌入。
  • <fencedframe> 無法訪問嵌入上下文的 DOM,嵌入上下文也無法訪問 <fencedframe> 的 DOM。

<fencedframe> 元素是一種內建了更多原生隱私功能的 <iframe>。它解決了 <iframe> 的缺點,例如對第三方 cookie 和其他隱私風險的依賴。有關更多詳細資訊,請參閱Fenced Frame API

屬性

此元素包含全域性屬性

allow 實驗性

<fencedframe> 指定一個許可權策略,該策略根據請求的來源定義 <fencedframe> 可用的功能。有關哪些功能可以透過在 fenced frame 上設定的策略進行控制的更多詳細資訊,請參閱Fenced Frame 可用的許可權策略

height 實驗性

一個無單位的整數,表示 fenced frame 的高度(以 CSS 畫素為單位)。預設值為 150

width 實驗性

一個無單位的整數,表示 fenced frame 的寬度(以 CSS 畫素為單位)。預設值為 300

Fenced Frame 可用的許可權策略

從頂層上下文委託給 fenced frame 以允許和拒絕功能的許可權可以用作通訊通道,因此構成隱私威脅。因此,可以透過許可權策略(例如,camerageolocation)控制可用性的標準 Web 功能在 fenced frame 內不可用

在 fenced frame 內唯一可以透過策略啟用的功能是專門設計用於 fenced frame 的特定功能

目前這些功能在 fenced frame 內始終啟用。將來,哪些功能被啟用將透過 <fencedframe>allow 屬性進行控制。以這種方式阻止隱私沙盒功能也將阻止 fenced frame 的載入——屆時將完全沒有通訊通道。

跨 Fenced Frame 邊界聚焦

文件活動焦點跨越 fenced frame 邊界(即,從 fenced frame 外部的元素移動到內部元素,反之亦然)的能力是有限的。使用者發起的操作(例如點選或 Tab 鍵)可以做到這一點,因為沒有指紋識別風險。

然而,嘗試透過 API 呼叫(例如HTMLElement.focus())遍歷邊界是被禁止的——惡意指令碼可能會使用一系列此類呼叫來洩露推斷的資訊跨越邊界。

定位和縮放

作為替換元素<fencedframe> 允許使用object-position 屬性調整嵌入文件在其框中的位置。

注意:object-fit 屬性對 <fencedframe> 元素沒有影響。

嵌入內容的大小可以透過 <fencedframe>config 物件的內部 contentWidthcontentHeight 屬性設定。在這種情況下,更改 <fencedframe>widthheight 將改變頁面上嵌入容器的大小,但容器內的文件將視覺縮放以適應。嵌入文件報告的寬度和高度(即Window.innerWidthWindow.innerHeight)將保持不變。

無障礙

使用輔助技術(例如螢幕閱讀器)導航的人員可以使用 <fencedframe> 上的title 屬性來標記其內容。標題的值應簡潔地描述嵌入內容

html
<fencedframe
  title="Advertisement for new Log. From Blammo!"
  width="640"
  height="320"></fencedframe>

如果沒有此標題,他們必須導航到 <fencedframe> 中才能確定其嵌入內容是什麼。這種上下文切換可能會令人困惑且耗時,特別是對於包含多個 <fencedframe> 的頁面和/或如果嵌入內容包含影片或音訊等互動式內容。

示例

要設定 <fencedframe> 中將顯示的內容,使用的 API(例如 Protected AudienceShared Storage)會生成一個 FencedFrameConfig 物件,然後將其設定為 <fencedframe>config 屬性的值。

以下示例從 Protected Audience API 的廣告競價中獲取一個 FencedFrameConfig,然後用於在 <fencedframe> 中顯示中標廣告

html
<fencedframe width="640" height="320"></fencedframe>
js
const frameConfig = await navigator.runAdAuction({
  // … auction configuration
  resolveToConfig: true,
});

const frame = document.querySelector("fencedframe");
frame.config = frameConfig;

注意:必須將 resolveToConfig: true 傳遞給 runAdAuction() 呼叫才能獲取 FencedFrameConfig 物件。如果未設定,結果的Promise 將解析為一個 URN,該 URN 只能在<iframe> 中使用。

技術摘要

內容類別 流內容短語內容、嵌入內容、互動式內容、可感知內容。
允許內容 無。
標籤省略 無,起始標籤和結束標籤都必須存在。
允許父級 任何接受嵌入內容的元素。
隱式 ARIA 角色 沒有對應的角色
允許的 ARIA 角色 applicationdocumentimgnonepresentation
DOM 介面 HTMLFencedFrameElement

規範

規範
圍欄框架
# the-fencedframe-element

瀏覽器相容性

另見