Spec-Zone.ru › HTML

<iframe>: Элемент встраиваемой страницы

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Элемент <iframe> HTML представляет собой вложенный контекст просмотра, встраивающий другую HTML-страницу в текущую.

Попробуйте

Каждый вложенный контекст просмотра имеет свой собственный документ и позволяет навигацию по URL. Навигация каждого вложенного контекста просмотра линейно отображается в истории сеанса главного контекста просмотра. Контекст просмотра, встраивающий другие, называется родительским контекстом просмотра. Главный контекст просмотра — тот, у которого нет родителя — обычно окно браузера, представленное объектом Window.

Предупреждение: Поскольку каждый контекст просмотра является полной средой документа, каждый <iframe> на странице требует увеличения памяти и других вычислительных ресурсов. Теоретически вы можете использовать сколько угодно <iframe>s, но проверьте наличие проблем с производительностью.

Атрибуты

Этот элемент включает глобальные атрибуты.

allow

Устанавливает Политику разрешений для <iframe>. Политика определяет, какие функции доступны <iframe> (например, доступ к микрофону, камере, батарее, web-share и т. д.) на основе источника запроса.

См. iframes в разделе Permissions-Policy для примеров.

Примечание: Политика разрешений, указанная атрибутом allow , реализует дополнительное ограничение поверх политики, указанной в заголовке Permissions-Policy. Она не заменяет её.

allowfullscreen

Устанавливается в true , если <iframe> может активировать полноэкранный режим, вызвав метод requestFullscreen().

Примечание: Этот атрибут считается устаревшим атрибутом и переопределен как allow="fullscreen".

allowpaymentrequest Устаревший Нестандартный

Устанавливается в true , если разрешено выполнение <iframe> API запроса оплаты в кросс-доменном режиме, для вызова API запроса оплаты.

Примечание: Этот атрибут считается устаревшим атрибутом и переопределен как allow="payment".

browsingtopics Экспериментальный Нестандартный

Булевый атрибут, который, если присутствует, указывает, что выбранные темы для текущего пользователя должны быть отправлены с запросом на источник <iframe>. Дополнительные сведения см. в разделе Использование API тем.

credentialless Экспериментальный

Устанавливается в true , чтобы сделать <iframe> без авторизации, что означает, что его содержимое будет загружено в новый, эфемерный контекст. Он не имеет доступа к сети, cookie и данным хранилища, связанным с его происхождением. Он использует новый контекст, локальный для времени жизни документа верхнего уровня. Взамен можно снять правила встраивания Cross-Origin-Embedder-Policy (COEP), поэтому документы с установленным COEP могут встраивать сторонние документы, которые этого не делают. Более подробную информацию см. в разделе IFrame без авторизации.

csp Экспериментальный

Применяемая Политика безопасности содержимого для встроенного ресурса. Подробнее см. HTMLIFrameElement.csp.

height

Высота фрейма в пикселях CSS. По умолчанию 150.

loading

Указывает, когда браузер должен загрузить iframe:

eager

Загрузить iframe сразу при загрузке страницы (это значение по умолчанию).

lazy

Отложить загрузку iframe до тех пор, пока он не достигнет рассчитанного расстояния от визуального области просмотра, как определено браузером. Цель состоит в том, чтобы избежать использования пропускной способности сети и хранилища для извлечения фрейма до тех пор, пока браузер не будет уверен, что он будет нужен. Это повышает производительность и снижает затраты в большинстве типичных случаев использования, особенно за счет сокращения начального времени загрузки страницы.

Примечание: Загрузка откладывается только при включенном JavaScript. Это мера против отслеживания.

name

Идентифицируемое имя встроенного контекста просмотра. Это можно использовать в атрибуте target элементов <a>, <form> или <base>; атрибуте formtarget элементов <input> или <button>; или параметре windowName в методе window.open().

referrerpolicy

Указывает, какой referrer отправлять при получении ресурса фрейма:

no-referrer

Заголовок Referer не будет отправлен.

no-referrer-when-downgrade

Заголовок Referer не будет отправлен в источники без TLS (HTTPS).

origin

Отправляемый referrer будет ограничен источником страницы, которая ссылается на неё: её схемой, хостом и портом.

origin-when-cross-origin

Referrer, отправленный в другие источники, будет ограничен схемой, хостом и портом. Переходы в том же источнике всё равно будут включать путь.

same-origin

Referrer будет отправлен для того же источника, но кросс-доменные запросы не будут содержать информации referrer.

strict-origin

Отправлять только происхождение документа в качестве referrer, когда уровень безопасности протокола остаётся прежним (HTTPS→HTTPS), но не отправлять его в менее безопасные пункты назначения (HTTPS→HTTP).

strict-origin-when-cross-origin (по умолчанию)

Отправлять полный URL при выполнении запроса одного источника, отправлять только источник, когда уровень безопасности протокола остаётся прежним (HTTPS→HTTPS), и не отправлять заголовок в менее безопасные пункты назначения (HTTPS→HTTP).

unsafe-url

Referrer будет включать происхождение и путь (но не фрагмент, пароль или имя пользователя). Это значение небезопасно, так как оно утекает происхождения и пути из защищённых TLS ресурсов в небезопасные источники.

sandbox

Управляет ограничениями, применяемыми к содержимому, встроенному в <iframe>. Значение атрибута может быть пустым для применения всех ограничений или содержать разделенные пробелами токены для снятия определенных ограничений:

allow-downloads

Разрешает загрузку файлов через элемент <a> или <area> с атрибутом download, а также через навигацию, которая приводит к загрузке файла. Это работает независимо от того, нажал ли пользователь на ссылку или код JavaScript инициировал загрузку без взаимодействия пользователя.

allow-forms

Разрешает отправку форм на странице. Если этот ключевой термин не используется, форма отображается как обычно, но при отправке она не вызовет валидации данных, не отправит данные на веб-сервер и не закроет диалоговое окно.

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

Если этот токен не используется, ресурс рассматривается как имеющий специальное происхождение, которое всегда отклоняет политику одинакового происхождения (что может препятствовать доступу к хранилищу данных/кукам и некоторым JavaScript-API).

allow-scripts

Разрешает странице запускать скрипты (но не создавать всплывающие окна). Если этот ключевой термин не используется, данная операция запрещена.

allow-storage-access-by-user-activation Экспериментальный

Разрешает документу, загруженному в <iframe>, использовать Storage Access API для запроса доступа к неразделенным кукам.

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 — например, если пользователь открывает фрейм в новой вкладке. Такое содержимое также должно подаваться с отдельного происхождения, чтобы ограничить возможный ущерб.

Примечание: При переадресации пользователя, открытии всплывающего окна или открытии новой вкладки со страницы, встроенной в <iframe> с атрибутом sandbox, новый контекст просмотра подчиняется тем же ограничениям sandbox. Это может создать проблемы — например, если страница, встроенная в <iframe> без атрибута sandbox="allow-forms" или sandbox="allow-popups-to-escape-sandbox" на ней, открывает новый сайт в отдельной вкладке, отправка формы в этом новом контексте просмотра будет молчаливо отклонена.

src

URL страницы для встраивания. Используйте значение about:blank для встраивания пустой страницы, соответствующей политике одинакового происхождения. Также обратите внимание, что программное удаление атрибута src у <iframe> (например, через Element.removeAttribute()) приводит к загрузке about:blank во фрейме в Firefox (с версии 65), браузерах на основе Chromium и Safari/iOS.

Примечание: Страница about:blank использует URL страницы встраивания в качестве базового URL при разрешении любых относительных URL, таких как ссылки.

srcdoc

Встроенный HTML-код, переопределяющий атрибут src. Его содержимое должно соответствовать синтаксису полного HTML-документа, включая директиву doctype, <html>, <body> теги и т.д., хотя большинство из них можно опустить, оставив только содержимое тела. Этот документ будет иметь about:srcdoc в качестве расположения. Если браузер не поддерживает атрибут srcdoc, он будет использовать URL из атрибута src.

Примечание: Страница about:srcdoc использует URL страницы встраивания в качестве базового URL при разрешении любых относительных URL, таких как ссылки.

width

Ширина фрейма в пикселях CSS. По умолчанию 300.

Устаревшие атрибуты

Эти атрибуты устарели и могут больше не поддерживаться всеми агентами пользователя. Их не следует использовать в новом содержимом, и необходимо попытаться удалить их из существующего содержимого.

align Устаревший

Выравнивание этого элемента относительно окружающего контекста.

frameborder Устаревший

Значение 1 (по умолчанию) рисует рамку вокруг этого фрейма. Значение 0 удаляет рамку вокруг фрейма, но вместо этого следует использовать свойство CSS border для управления <iframe> рамками.

longdesc Устаревший

URL длинного описания содержимого фрейма. Из-за широкого злоупотребления это не полезно для браузеров без графического интерфейса.

marginheight Устаревший

Количество пикселей между содержимым фрейма и его верхними и нижними границами.

marginwidth Устаревший

Количество пикселей между содержимым фрейма и его левыми и правыми границами.

scrolling Устаревший

Указывает, когда браузер должен отображать полосу прокрутки для фрейма:

auto

Только когда содержимое фрейма больше его размеров.

yes

Полоса прокрутки всегда отображается.

no

Полоса прокрутки никогда не отображается.

Скрипты

Встраиваемые фреймы, такие как элементы <frame>, включаются в псевдомассив window.frames.

С помощью объекта DOM HTMLIFrameElement, скрипты могут получить доступ к объекту window встраиваемого ресурса через свойство contentWindow. Свойство contentDocument ссылается на document внутри <iframe>, аналогично contentWindow.document.

Изнутри фрейма скрипт может получить ссылку на родительское окно с помощью window.parent.

Доступ скрипта к содержимому фрейма ограничен политикой одного происхождения. Скрипты не могут получить доступ к большинству свойств других window объектов, если скрипт загружен из другого источника, включая скрипты внутри фрейма, пытающиеся получить доступ к родительскому фрейму. Междоменное взаимодействие можно обеспечить с помощью Window.postMessage().

Позиционирование и масштабирование

Будучи элементом замещения, <iframe> позволяет настроить позицию встроенного документа в его блоке с помощью свойства object-position.

Примечание: Свойство object-fit не оказывает влияния на <iframe> элементы.

error и load поведение событий

События error и load, срабатывающие на элементах <iframe> , могут использоваться для анализа адресного пространства локальных HTTP-серверов сети. Поэтому, в целях безопасности, пользовательские агенты не генерируют событие error для <iframe> и всегда генерируют событие load, даже если содержимое <iframe> не загрузилось.

Доступность

Пользователи с технологиями вспомогательного доступа, такими как программы чтения с экрана, могут использовать атрибут title атрибут для элементов <iframe> , чтобы обозначить их содержимое. Значение атрибута title должно кратко описывать встроенное содержимое:

html
<iframe
  title="Wikipedia page for Avocados"
  src="https://en.wikipedia.org/wiki/Avocado"></iframe>

Без этого атрибута им приходится переходить внутрь <iframe> , чтобы определить, что в нём находится. Такой переход контекста может быть неудобным и трудоёмким, особенно на страницах с несколькими <iframe> элементами и/или если вставки содержат интерактивный контент, такой как видео или аудио.

Примеры

Простой элемент <iframe>

В данном примере страница по адресу https://example.org встраивается в iframe. Это распространённый случай использования iframes: для вставки контента с другого сайта. Например, сам демонстрационный пример и пример «попробуйте» вверху — оба <iframe> вставки контента с другого сайта MDN.

HTML

html
<iframe
  src="https://example.org"
  title="iframe Example 1"
  width="400"
  height="300">
</iframe>

Результат

Вставка исходного кода в <iframe>

В этом примере исходный код отображается непосредственно в iframe. Это можно использовать как способ предотвращения внедрения скриптов при отображении пользовательского контента в сочетании с атрибутом sandbox.

Обратите внимание, что при использовании srcdoc, любые относительные ссылки во встроенном содержимом будут разрешаться относительно URL страницы вставки. Если вы хотите использовать ссылки, которые указывают на места во встроенном содержимом, вам необходимо явно указать about:srcdoc в качестве базового URL.

HTML

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=&quot;about:srcdoc#embed_another&quot;>To embed content from another page</a></li>
<li><a href=&quot;about:srcdoc#embed_user&quot;>To embed user-generated content</a></li>
</ol>
<h2 id=&quot;embed_another&quot;>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>&amp;lt;iframe src=&quot;https://example.org&quot;&amp;gt;&amp;lt;/iframe&amp;gt;</code></pre>
<h2 id=&quot;embed_user&quot;>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-документе (таком как <, >, &, и т.д.).
  • &lt; и < представляют один и тот же символ в атрибуте srcdoc. Поэтому, чтобы сделать это фактической последовательностью экранирования в HTML-документе, замените все амперсанды (&) на &amp;. Например, &lt; превращается в &amp;lt;, а &amp; — в &amp;amp;.
  • Замените все двойные кавычки (") на &quot; , чтобы предотвратить преждевременное завершение атрибута srcdoc (если вы используете ' вместо, то замените ' на &apos;). Этот шаг выполняется после предыдущего, поэтому &quot; , созданное на этом шаге, не превращается в &amp;quot;.

Результат

Техническое описание

Категории содержимого Потоковое содержимое, фразовое содержимое, встроенное содержимое, интерактивное содержимое, осязаемое содержимое.
Разрешённое содержимое Нет.
Пропуск тегов Нет, оба тега (открывающий и закрывающий) обязательны.
Разрешённые родительские элементы Любой элемент, который принимает встроенное содержимое.
Неявная роль ARIA Отсутствует соответствующая роль
Разрешённые роли ARIA application, document, img, none, presentation
Интерфейс DOM HTMLIFrameElement

Спецификации

Спецификация
HTML Стандарт
# the-iframe-element

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
iframe 1 12
1Свойство CSS resize не оказывает никакого влияния на этот элемент из-за ошибки 680823.
≤15
≤4В Safari есть ошибка, которая не позволяет загружать iframe, если элемент iframe был скрыт при добавлении на страницу. iframeElement.src = iframeElement.src должно заставить его загрузить iframe.
18
4Свойство CSS resize не оказывает никакого влияния на этот элемент из-за ошибки 680823.
≤14
≤3.2В Safari есть ошибка, которая не позволяет загружать iframe, если элемент iframe был скрыт при добавлении на страницу. iframeElement.src = iframeElement.src должно заставить его загрузить iframe.
1.0 4.4
align 1 12 1 15 3 18 4 14 2 1.0 4.4
allow 60 79 74 47 11.1 60 79 44 11.3 8.0 60
allowfullscreen 3817–38 12 189–18 2515–25 10.15.1 3818–38 189–18 2514–25
12["Доступно только на iPad, не на iPhone.", "Показывает кнопку оверлея, которую нельзя отключить. Проведение пальцем вниз выходит из полноэкранного режима, что делает его непригодным для некоторых вариантов использования, таких как игры."]
3.01.0–3.0 384.4–38
allowpaymentrequest 60 79 56–83 47 Нет 60 56–83 44 Нет 8.0 60
browsingtopics 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
credentialless 110 110 Нет 96 Нет 110 Нет 74 Нет 21.0 110
csp 61 79 Нет 48 Нет 61 Нет 45 Нет 8.0 61
frameborder 1 12 1 15 3 18 4 14 2 1.0 4.4
height 1 12 1 15 3 18 4 14 2 1.0 4.4
loading 77 79 121 64 16.4 77 121 55 16.4 12.0 77
longdesc 1 12 1 15 3 18 4 14 2 1.0 4.4
marginheight 1 12 1 15 3 18 4 14 2 1.0 4.4
marginwidth 1 12 1 15 3 18 4 14 2 1.0 4.4
name 1 12 1 15 3 18 4 14 2 1.0 4.4
referrerpolicy 51 79 50 38 14 51 50 41 14 7.2 51
sandbox 5 12 17 15 5 18 17 14 4 1.0 4.4
scrolling 1 12 1 15 3 18 4 14 2 1.0 4.4
src 1 12 1 15 ≤4 18 4 14 ≤3.2 1.0 4.4
srcdoc 20 79 25 15 6 25 25 14 6 1.5 37
width 1 12 1 15 3 18 4 14 2 1.0 4.4

См. также

  • CSP: frame-ancestors
  • Конфиденциальность, разрешения и безопасность информации

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API