<fencedframe> элемент HTML для изолированного фрейма
Ограниченная доступность
Эта функция не входит в Baseline, поскольку она не работает в некоторых наиболее широко используемых браузерах.
Экспериментальная: Это экспериментальная технология
Перед использованием в рабочей среде внимательно изучите таблицу совместимости с браузерами.
Элемент <fencedframe> из HTML представляет собой вложенный контекст просмотра, в который встраивается другая HTML-страница. <fencedframe>ы очень похожи по форме и функциям на элементы <iframe>, за исключением того, что:
- Взаимодействие между содержимым
<fencedframe>и встраивающим его сайтом ограничено. <fencedframe>может получать доступ к данным с других сайтов, но только при строго определенных контролируемых условиях, обеспечивающих конфиденциальность пользователей.<fencedframe>нельзя изменять, а доступ к его данным нельзя получить с помощью обычных скриптов (например, прочитать или задать исходный URL). Содержимое<fencedframe>можно встраивать только с помощью специальных API.<fencedframe>не может обращаться к DOM встраивающего контекста, а встраивающий контекст не может обращаться к DOM<fencedframe>.
Элемент <fencedframe> — это тип <iframe> со встроенными дополнительными средствами защиты конфиденциальности. Он устраняет недостатки <iframe>ов, например зависимость от сторонних файлов cookie и другие риски для конфиденциальности. Подробнее см. в разделе Fenced Frame API.
Атрибуты
Этот элемент включает глобальные атрибуты.
allow-
Задает политику разрешений для
<fencedframe>, которая определяет доступные<fencedframe>функции в зависимости от источника запроса. Подробнее о том, какие функции можно контролировать с помощью политики, заданной для изолированного фрейма, см. в разделе Политики разрешений, доступные для изолированных фреймов. height-
Безразмерное целое число, обозначающее высоту изолированного фрейма в пикселях CSS. Значение по умолчанию —
150. width-
Безразмерное целое число, обозначающее ширину изолированного фрейма в пикселях CSS. Значение по умолчанию —
300.
Политики разрешений, доступные для изолированных фреймов
Разрешения, передаваемые из контекста верхнего уровня изолированному фрейму для включения или запрета функций, могут использоваться как канал связи и поэтому представляют угрозу конфиденциальности. В результате стандартные веб-функции, доступность которых можно контролировать с помощью политики разрешений (например, camera или geolocation), недоступны в изолированных фреймах.
Включать с помощью политики внутри изолированных фреймов можно только отдельные функции, предназначенные для использования в них:
-
Protected Audience API
attribution-reportingprivate-aggregationshared-storageshared-storage-select-url
-
Shared Storage API
attribution-reportingprivate-aggregationshared-storageshared-storage-select-url
В настоящее время эти функции всегда включены внутри изолированных фреймов. В будущем набор включенных функций можно будет контролировать с помощью атрибута <fencedframe> allow. Блокировка функций Privacy Sandbox таким способом также заблокирует загрузку изолированного фрейма — канал связи будет полностью отсутствовать.
Перемещение фокуса между границами изолированного фрейма
Возможность перемещать активный фокус документа через границы изолированного фрейма (то есть с элемента за пределами фрейма на элемент внутри него или наоборот) ограничена. Это можно сделать с помощью действий пользователя, например щелчка или нажатия клавиши Tab, поскольку такие действия не создают риска снятия цифрового отпечатка.
Однако переход через границу с помощью вызова API, например HTMLElement.focus(), запрещен: вредоносный скрипт может использовать серию таких вызовов, чтобы передать выведенную информацию через границу.
Позиционирование и масштабирование
Поскольку <fencedframe> является замещаемым элементом, положение встроенного документа внутри его контейнера можно настроить с помощью свойства object-position.
Примечание: Свойство object-fit не влияет на элементы <fencedframe>.
Размер встроенного содержимого может задаваться внутренними свойствами contentWidth и contentHeight объекта <fencedframe> config. В таких случаях изменение width или height элемента <fencedframe> изменит размер встроенного контейнера на странице, но документ внутри контейнера будет визуально масштабирован, чтобы поместиться в него. Сообщаемые ширина и высота встроенного документа (то есть Window.innerWidth и Window.innerHeight) останутся неизменными.
Доступность
Люди, использующие вспомогательные технологии, например программы чтения с экрана, могут добавить описание содержимого с помощью атрибута title элемента <fencedframe>. Значение атрибута title должно кратко описывать встроенное содержимое:
<fencedframe title="Advertisement for new Log. From Blammo!" width="640" height="320"></fencedframe>
Без этого описания пользователям придется перейти к <fencedframe>, чтобы понять, что именно в него встроено. Такая смена контекста может сбивать с толку и отнимать много времени, особенно на страницах с несколькими <fencedframe>ами и/или если встроенные элементы содержат интерактивный контент, например видео или аудио.
Примеры
Чтобы задать содержимое, которое будет отображаться в <fencedframe>, использующий API (например, Protected Audience или Shared Storage) создает объект FencedFrameConfig, который затем задается в качестве значения свойства config элемента <fencedframe>.
В следующем примере объект FencedFrameConfig извлекается из рекламного аукциона Protected Audience API, а затем используется для отображения выигравшего объявления в <fencedframe>:
<fencedframe width="640" height="320"></fencedframe>
const frameConfig = await navigator.runAdAuction({
// … auction configuration
resolveToConfig: true,
});
const frame = document.querySelector("fencedframe");
frame.config = frameConfig;
Примечание: Для получения объекта FencedFrameConfig необходимо передать resolveToConfig: true в вызов runAdAuction(). Если он не задан, результирующий объект Promise разрешится в URN, который можно использовать только в элементе <iframe>.
Техническая сводка
| Категории содержимого | Потоковое содержимое, фразовое содержимое, встроенное содержимое, интерактивное содержимое, осязаемое содержимое. |
|---|---|
| Допустимое содержимое | Нет. |
| Опускание тегов | Не допускается: обязательны открывающий и закрывающий теги. |
| Допустимые родительские элементы | Любой элемент, допускающий встроенное содержимое. |
| Неявная роль ARIA | Соответствующая роль отсутствует |
| Допустимые роли ARIA | application, document, img, none, presentation |
| Интерфейс DOM | HTMLFencedFrameElement |
Спецификации
| Спецификация |
|---|
| Fenced Frame> # the-fencedframe-element> |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
fencedframe |
126 | 126 | Нет | 112 | Нет | 126 | Нет | 83 | Нет | 28.0 | 126 | Нет |
allow |
126 | 126 | Нет | 112 | Нет | 126 | Нет | 83 | Нет | 28.0 | 126 | Нет |
height |
126 | 126 | Нет | 112 | Нет | 126 | Нет | 83 | Нет | 28.0 | 126 | Нет |
width |
126 | 126 | Нет | 112 | Нет | 126 | Нет | 83 | Нет | 28.0 | 126 | Нет |
См. также
- API изолированных фреймов
- Изолированные фреймы на privacysandbox.google.com
- Песочница конфиденциальности на privacysandbox.google.com
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/fencedframe