HTML | Элемент iframe

HTML | Элемент iframe

Категории:

Контексты, в которых может использоваться этот элемент:

Контентная модель:

Отсутствие тега в text/html:

Ни один из тегов не может быть пропущен.

 

Атрибуты контента:

Соображения доступности:

Интерфейс DOM:

[Exposed=Window]
interface HTMLIFrameElement : HTMLElement {
[HTMLConstructor] constructor();

[CEReactions] attribute USVString src;
[CEReactions] attribute DOMString srcdoc;
[CEReactions] attribute DOMString name;
[SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox;
[CEReactions] attribute DOMString allow;
[CEReactions] attribute boolean allowFullscreen;
[CEReactions] attribute DOMString width;
[CEReactions] attribute DOMString height;
[CEReactions] attribute DOMString referrerPolicy;
[CEReactions] attribute DOMString loading;
readonly attribute Document? contentDocument;
readonly attribute WindowProxy? contentWindow;
Document? getSVGDocument();

// also has obsolete members
};

 

Элемент iframe представляет его вложенный контекст просмотра.

Атрибут src даёт URL-адрес страницы, которую должен содержать вложенный контекст просмотра элемента. Атрибут, если он присутствует, должен быть действительным непустым URL-адресом, потенциально окружённым пробелами. Если для элемента iframe указан атрибут itemprop, то необходимо также указать атрибут src.

Атрибут srcdoc предоставляет содержимое страницы, которое должен содержать вложенный контекст просмотра элемента. Значением атрибута является источник документа iframe srcdoc (an iframe srcdoc document).

Атрибут srcdoc, если он присутствует, должен иметь значение с использованием синтаксиса HTML, состоящего из следующих синтаксических компонентов в заданном порядке:

1. Любое количество комментариев и пробелов ASCII.
2. Опционально, DOCTYPE.
3. Любое количество комментариев и пробелов ASCII.
4. Элемент документа в виде элемента html.
5. Любое количество комментариев и пробелов ASCII.
Примечание

Вышеуказанные требования применяются и к XML-документам.

 

Пример

Здесь блог использует атрибут srcdoc в сочетании с описанным ниже атрибутом песочницы sandbox, чтобы предоставить пользователям пользовательских агентов, поддерживающих эту функцию, дополнительный уровень защиты от внедрения скриптов в комментарии к сообщениям блога:

<article>

    <h1>У меня появился свой журнал!</h1>

    <p>После долгих усилий я наконец нашел издателя, и теперь у меня есть собственный журнал! Разве это не здорово?! Первый номер выйдет в сентябре, и у нас есть статьи о том, как достать еду, и о том, как попасть в коробки, это будет здорово!</p>

    <footer>

        <p>Написал <a href=«/users/cap»>Кэп</a>, 1 час назад.</p>

    </footer>

    <article>

        <footer>Тринадцать минут назад, <a href=«/users/ch»>ch</a> написал:</footer>

        <iframe sandbox srcdoc=«<p>вы уже получили обложку?</p>»></iframe>

    </article>

    <article>

        <footer>Девять минут назад, <a href=«/users/cap»>cap</a> написал: </footer>

        <iframe sandbox

            srcdoc=«<p>Да, вы можете увидеть это <a href=&quot;/gallery?mode=cover&amp;amp;page=1&quot;>в моей галерее</a>.</p>»></iframe>

    </article>

    <article>

        <footer> Пять минут назад, <a href=«/users/ch»>ch</a> написал: </footer>

        <iframe sandbox srcdoc=«<p>Эй, это стол Эрла.</p>

   <p>Вы должны получить earl&amp;amp;me на следующей обложке.</p>»></iframe>

    </article>

</article>

Обратите внимание на то, как нужно экранировать кавычки (иначе атрибут srcdoc закончился бы преждевременно), и как необработанные амперсанды (например, в URL-адресах или в прозе), упомянутые в изолированном содержимом, должны экранироваться дважды — один раз, чтобы амперсанд сохранился при первоначальном анализе атрибута srcdoc и еще раз, чтобы предотвратить неправильное толкование амперсанда при анализе изолированного содержимого.

Кроме того, обратите внимание, что, поскольку DOCTYPE является необязательным в документах iframe srcdoc, а элементы html, head и body имеют необязательные начальный и конечный теги, а элемент title также является необязательным в документах iframe srcdoc, разметка в атрибуте srcdoc может быть изменена относительно кратким, несмотря на представление всего документа, поскольку в синтаксисе буквально должно отображаться только содержимое элемента body. Остальные элементы всё ещё присутствуют, но только косвенно.

 

Примечание

В синтаксисе HTML авторам нужно только не забыть использовать символы U+0022 QUOTATION MARK («) для переноса содержимого атрибута, а затем экранировать все символы U+0026 AMPERSAND (&) и U+0022 QUOTATION MARK («), а также укажите атрибут песочницы sandbox, чтобы обеспечить безопасное встраивание контента. (И не забывайте избегать амперсандов перед кавычками, чтобы кавычки стали &quot;, а не &amp;quot;.)

 

Примечание

В XML также необходимо экранировать символ U+003C LESS-THAN SIGN (<). Чтобы предотвратить нормализацию значения атрибута, некоторые из пробельных символов XML — в частности, U+0009 CHARACTER TABULATION (tab), U+000A LINE FEED (LF) и U+000D CARRIAGE RETURN (CR) — также необходимо экранировать. [XML]

 

Примечание

Если атрибут src и атрибут srcdoc указаны вместе, атрибут srcdoc имеет приоритет. Это позволяет авторам предоставлять резервный URL-адрес для устаревших пользовательских агентов, которые не поддерживают атрибут srcdoc.

 

Когда элемент iframe element вставляется в документ, контекст просмотра которого не равен null, пользовательский агент должен выполнить следующие шаги:

1. Создайте новый вложенный контекст просмотра для элемента element.
2. Если у элемента element есть атрибут песочницы sandbox, то проанализируйте директиву песочницы с учетом значения атрибута и установленного флага песочницы iframe элемента element.
3. Обработайте атрибуты iframe для элемента element, установив для initialInsertion значение true.

Когда элемент iframe удаляется из документа, пользовательский агент должен отбросить вложенный контекст просмотра элемента, если он не равен null, а затем установить для вложенного контекста просмотра элемента значение null.

Примечание

Это происходит без каких-либо событий выгрузки unload (вложенный контекст просмотра элемента и его документ Document отбрасываются, а не выгружаются).

 

Всякий раз, когда элемент iframe с НЕ-null вложенным контекстом просмотра имеет установленный, измененный или удаленный атрибут srcdoc, пользовательский агент должен обработать атрибуты iframe.

Точно так же всякий раз, когда элемент iframe с НЕ-null вложенным контекстом просмотра, но без указанного атрибута srcdoc имеет установленный, измененный или удаленный атрибут src, пользовательский агент должен обработать атрибуты iframe.

Чтобы обработать атрибуты iframe (process the iframe attributes) для элемента element с необязательным логическим значением initialInsertion (по умолчанию false):

1. Если указан атрибут srcdoc элемента element, то:
  1.1. Установить текущую навигацию с отложенной загрузкой элемента element логического значения в false.
  1.2. Если шаги элемента ленивой загрузки данного элемента element возвращают значение true, то:
    1.2.1. Установите шаги возобновления ленивой загрузки элемента element для остальной части этого алгоритма, начиная с шага, помеченного как "Перейти к ресурсу srcdoc." (navigate to the srcdoc resource)
    1.2.2. Установить текущую навигацию с отложенной загрузкой элемента element логического значения в true.
    1.2.3. Начать пересечение - наблюдение за ленивой загрузкой элемента за элементом element.
    1.2.4. Вернуть.
  1.3. "Перейти к ресурсу srcdoc": перейдите к iframe или frame заданного element и новому ответу, список URL-адресов которого имеет вид « about:srcdoc », список заголовков « (`Content-Type`, `text/html`) », а тело – это значение атрибута srcdoc элемента element.
  Результирующий документ Document должен рассматриваться как документ iframe srcdoc.
2. В противном случае выполните этапы обработки общих атрибутов для iframe и frame элементов с заданным element и initialInsertion.

 

Шаги обработки общих атрибутов для элементов iframe и frame (shared attribute processing steps for iframe and frame elements), учитывая элемент element и логическое значение initialInsertion, следующие:

1. Пусть url будет записью URL about:blank.
2. Если элемент element имеет указанный атрибут src, и его значение не является пустой строкой, то следует проанализировать значение этого атрибута относительно документа узла элемента element. Если это удалось, установите url на полученной записи URL.
3. Если существует предок контекста просмотра вложенного контекста просмотра элемента element, URL-адрес активного документа которого, игнорируя фрагменты, равен url, то возврат.
4. Если url соответствует about:blank, а initialInsertion равен true, то:
  4.1 Выполните действия по обновлению URL-адреса и истории, учитывая активный документ и url вложенного контекста просмотра элемента element.
Примечание

Это необходимо в случае, если url имеет вид about:blank?foo. Если URL-адрес просто about:blank, это ничего не сделает.

  4.2 Запустите шаги события загрузки iframe для данного элемента element.
  4.3 Возвращение.
5. Пусть ресурс resource будет новым запросом, URL-адрес которого является url, а политика рефёрера - текущим состоянием атрибута содержимого referrerpolicy элемента element.
6. Если элемент element является элементом iframe, то установите текущую навигацию ленивой загрузки элемента element в значение false.
7. Если элемент element является элементом iframe, и шаги элемента ленивой загрузки данного элемента element возвращают значение true, тогда:
  7.1 Установите шаги возобновления ленивой загрузки элемента element для остальной части этого алгоритма, начиная с шага, помеченного как "перейти к ресурсу".
  7.2 Установите текущую навигацию ленивой загрузки элемента element логическим значением true.
  7.3 Начать пересечение - наблюдение за ленивой загрузкой элемента за элементом element.
  7.4 Возвращение.
8. Перейти к ресурсу: перейти к iframe или frame с данным элементом element и ресурсом resource.

 

Для навигации по iframe или frame (navigate an iframe or frame) с заданным элементом element и ресурсом resource:

1. Пусть historyHandling будет "default".
2. Если вложенный контекст просмотра элемента element всё ещё находится в своём начальном about:blank Document, тогда установите для historyHandling значение "replace".
3. Если активный документ вложенного контекста просмотра элемента element НЕ загружен полностью, установите для historyHandling значение "replace".
4. Перейдите от вложенного контекста просмотра элемента element к ресурсу resource, при этом для historyHandling задано значение historyHandling, а для исходного контекста просмотра задан контекст просмотра документа узла элемента element.

 

Примечание

Событие загрузки load также запускается для элемента iframe при его создании, если в него не загружены другие данные.

 

Каждый документ Document имеет флаг прогресса загрузки iframe (iframe load in progress flag) и флаг отключения загрузки iframe (mute iframe load flag). При создании документа Document эти флаги должны быть сняты для этого документа Document.

Чтобы выполнить шаги события загрузки iframe (iframe load event steps), учитывая элемент элемента iframe:

1. Утверждено: вложенный контекст просмотра элемента element не равен null.
2. Пусть дочерний документ childDocument будет активным документом вложенного контекста просмотра элемента element.
3. Если для childDocument установлен флаг отключения загрузки iframe, возврат.
4. Установите флаг прогресса загрузки iframe для childDocument.
5. Запустите событие с именем load в элементе element.
6. Снять флаг прогресса загрузки iframe дочернего документа childDocument.
ОПАСНОСТЬ!!!

Это, в сочетании со сценариями, можно использовать для проверки пространства URL-адресов HTTP-серверов локальной сети. Пользовательские агенты могут реализовывать политики управления доступом между источниками (cross-origin), которые являются более строгими, чем описанные выше, чтобы смягчить эту атаку, но, к сожалению, такие политики обычно несовместимы с существующим веб-контентом.

 

Если тип элемента потенциально задерживает событие загрузки (potentially delays the load event), то для каждого элемента element этого типа пользовательский агент должен задержать событие загрузки документа узла элемента element, если вложенный контекст просмотра элемента element не равен null и выполняется любое из следующих условий:

  1. Активный документ вложенного контекста просмотра элемента element не готов к задачам пост-загрузки.
  2. Что-либо задерживает событие загрузки активного документа вложенного контекста просмотра элемента element.
  3. Вложенный контекст просмотра элемента element находится в режиме отложенных событий загрузки load.

 

Примечание

Если во время обработки события загрузки load снова осуществляется навигация по вложенному контексту просмотра элемента element, это приведет к дальнейшей задержке события загрузки.

 

Каждый элемент iframe имеет связанную текущую навигацию с ленивой загрузкой (current navigation was lazy loaded) логического значения, изначально false. Он устанавливается и сбрасывается в алгоритме процесса атрибутов iframe.

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

 

Примечание

Если при создании элемента атрибут srcdoc не установлен, а атрибут src либо тоже не установлен, либо установлен, но его значение не может быть проанализировано, контекст просмотра останется на исходном about:blank документа Document.

 

Примечание

Если пользователь уходит с этой страницы, объект WindowProxy вложенного контекста просмотра iframe будет проксировать новые объекты Window для новых объектов Document, но атрибут src не изменится.

 

Атрибут name, если он присутствует, должен быть допустимым именем контекста просмотра. Данное значение используется для именования вложенного контекста просмотра элемента, если он присутствует при его создании.

 

Атрибут песочницы sandbox, если он указан, включает набор дополнительных ограничений для любого контента, размещенного в iframe. Его значение должно быть неупорядоченным набором уникальных токенов, разделенных пробелами, нечувствительных к регистру ASCII.

Допустимые значения:

Когда атрибут песочницы sandbox установлен, контент обрабатывается как полученный из уникального источника, формы, сценария и различные потенциально раздражающие API-интерфейсы отключаются, ссылки не могут указывать на другие контексты просмотра, а подключаемые модули защищены.

Ключевое слово allow-same-origin приводит к тому, что содержимое рассматривается как полученное из его реального источника, а не принудительно вводится в уникальное происхождение.

Ключевое слово allow-top-navigation позволяет содержимому перемещаться по контексту просмотра верхнего уровня;

Ключевое слово allow-top-navigation-by-user-activation ведёт себя аналогично, но разрешает такую ​​навигацию только тогда, когда активное окно контекста просмотра имеет временную активацию.

Ключевые слова «разрешить формы» (allow-forms), «разрешить модальные окна» (allow-modals), «разрешить блокировку ориентации» (allow-orientation-lock), «разрешить блокировку указателя» (allow-pointer-lock), «разрешить всплывающие окна» (allow-popups), «разрешить представление» (allow-presentation), «разрешить сценарии» (allow-scripts) и «разрешить всплывающие окна для выхода из песочницы» (allow-popups-to-escape-sandbox) повторно активируют формы, модальные диалоги, блокировка ориентации экрана, API блокировки указателя, всплывающие окна, API презентаций, сценарии и создание дополнительных контекстов просмотра без песочницы соответственно.

Ключевое слово allow-downloads разрешает загрузку контента. [POINTERLOCK] [SCREENORIENTATION] [PRESENTATION]

Ключевые слова allow-top-navigation и allow-top-navigation-by-user-activation не должны указываться одновременно, так как это избыточно; только allow-top-navigation будет иметь эффект в такой несовместимой разметке.

Примечание

Чтобы разрешить alert(), confirm() и prompt() внутри изолированного контента, необходимо указать как ключевые слова allow-modals, так и allow-same-origin, а загруженный URL-адрес должен иметь тот же источник, что и источник верхнего уровня. Без ключевого слова allow-same-origin содержимое всегда рассматривается как содержимое из разных источников, а содержимое из разных источников не может отображать простые диалоги.

 

ОПАСНОСТЬ!!!

Установка ключевых слов allow-scripts и allow-same-origin вместе, когда встроенная страница имеет то же происхождение, что и страница, содержащая iframe, позволяет встроенной странице просто удалить атрибут песочницы sandbox, а затем перезагрузить себя, полностью выйдя из песочницы.

 

ОПАСНОСТЬ!!!

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

 

ОПАСНОСТЬ!!!

Потенциально опасные файлы не должны обслуживаться с того же сервера, что и файл, содержащий элемент iframe. Изолирование враждебного контента в песочнице мало помогает, если злоумышленник может убедить пользователя просто посетить враждебный контент напрямую, а не в iframe. Чтобы ограничить ущерб, который может быть нанесен враждебным HTML-контентом, его следует обслуживать с отдельного выделенного домена. Использование другого домена гарантирует, что скрипты в файлах не смогут атаковать сайт, даже если пользователя обманом заставят посетить эти страницы напрямую, без защиты атрибута песочницы sandbox.

 

Когда атрибут песочницы sandbox элемента iframe установлен или изменен, когда он имеет НЕ-null вложенный контекст просмотра, пользовательский агент должен проанализировать директиву песочницы с учетом значения атрибута и установленного флага песочницы iframe элемента iframe.

Когда атрибут песочницы sandbox элемента iframe удаляется, когда он имеет НЕ-null вложенный контекст просмотра, пользовательский агент должен очистить набор флагов песочницы iframe элемента iframe.

 

Пример

В этом примере на страницу встроен некоторый совершенно неизвестный, потенциально враждебный HTML-контент, предоставленный пользователями. Поскольку он обслуживается из отдельного домена, на него распространяются все обычные межсайтовые ограничения. Кроме того, на встроенной странице отключены сценарии, отключены плагины, отключены формы, и она не может перемещаться по каким-либо фреймам или окнам, кроме себя (или любых фреймов или окон, которые она сама встраивает).

<p>Мы вас не боимся! Вот ваш контент, неотредактированный:</p>

<iframe sandbox src=«https://usercontent.example.net/getusercontent.cgi?id=12193»></iframe>

ОПАСНОСТЬ !!!

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

 

Пример

В данном примере встраивается гаджет с другого сайта. В гаджете включены сценарии и формы, а ограничения исходной песочницы сняты, что позволяет гаджету взаимодействовать со своим исходным сервером. Тем не менее, песочница по-прежнему полезна, поскольку она отключает плагины и всплывающие окна, тем самым снижая риск того, что пользователь подвергнется воздействию вредоносных программ и других неприятностей.

<iframe sandbox=«allow-same-origin allow-forms allow-scripts» src=«https://maps.example.com/embedded.html»></iframe>

 

Пример

Предположим, что файл A содержит следующий фрагмент:

<iframe sandbox=«allow-same-origin allow-forms» src=B></iframe>

Предположим, что файл B также содержит iframe:

<iframe sandbox=«allow-scripts» src=C></iframe>

Далее предположим, что файл C содержит ссылку:

<a href=D>Link</a>

Для этого примера предположим, что все файлы были переданы как text/html.

На странице C в этом сценарии установлены все флаги песочницы. Скрипты отключены, потому что в iframe в A отключены сценарии, и это переопределяет ключевое слово allow-scripts, установленное в iframe в B. Формы также отключены, потому что во внутреннем iframeB) не установлено ключевое слово allow-forms.

Теперь предположим, что сценарий в A удаляет все атрибуты песочницы sandbox в A и B. Сразу же это ничего не изменит. Если пользователь щелкнул ссылку в C, загружая страницу D в iframe в B, страница D теперь будет вести себя так, как если бы iframe в B имел установленные ключевые слова allow-same-origin и allow-forms, потому что это было состоянием вложенный контекст просмотра в iframe в A, когда страница B была загружена.

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

 

Атрибут allow, если он указан, определяет политику контейнера, которая будет использоваться при инициализации политики разрешений для Документа во вложенном контексте просмотра iframe. Его значение должно быть сериализованной политикой разрешений. [PERMISSIONSPOLICY]

Пример

В этом примере iframe используется для встраивания карты из службы онлайн-навигации. Атрибут allow используется для включения API Геолокации во вложенном контексте.

<iframe src=«https://maps.example.com/» allow=«geolocation»></iframe>

Атрибут allowfullscreen является логическим атрибутом. Когда он указан, он указывает, что объекты Document во вложенном контексте просмотра элемента iframe будут инициализированы с политикой разрешений, которая позволяет использовать функцию «полноэкранного режима» «fullscreen» из любого источника. Это обеспечивается алгоритмом атрибутов политики разрешений процесса. [PERMISSIONSPOLICY]

Пример

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

<article>

    <header>

        <p><img src=«/usericons/1627591962735»> <b>Фред Флинтстоун</b></p>

        <p><a href=«/posts/3095182851» rel=bookmark>12:44</a><a href=«#acl-3095182851»>Частный пост</a></p>

    </header>

    <p>Оцените мою новую поездку!</p>

    <iframe src=«https://video.example.com/embed?id=92469812» allowfullscreen></iframe>

</article>

 

Примечание

Ни allow, ни allowfullscreen не могут предоставить доступ к функции во вложенном контексте просмотра элемента iframe, если документу узла элемента ещё не разрешено использовать эту функцию.

 

Чтобы определить, объекту  Document документа document, разрешено ли использовать (allowed to use) функцию feature управляемую политикой, выполните следующие действия:

1. Если контекст просмотра документа document равен null, верните false.
2. Если активный документ контекста просмотра документа document не является документом document, верните false.
3. Если в результате выполнения функция включена в документе для источника в функции feature, документе document и источнике документа document является "Enabled", верните значение true.
4. Вернуть false.
ОПАСНОСТЬ !!!

Поскольку они влияют только на политику разрешений активного документа вложенного контекста просмотра, атрибуты allow и allowfullscreen вступают в силу только при навигации по вложенному контексту просмотра iframe. Их добавление или удаление не влияет на уже загруженный документ.

 

Элемент iframe поддерживает атрибуты размеров для случаев, когда встроенный контент имеет определенные размеры (например, рекламные блоки имеют чётко определенные размеры).

Элемент iframe никогда не имеет резервного содержимого, поскольку он всегда создаёт новый вложенный контекст просмотра, независимо от того, успешно ли используется указанное начальное содержимое.

 

Атрибут referrerpolicy является атрибутом политики referrer. Его цель — установить политику рефёрера, используемую при обработке атрибутов iframe. [REFERRERPOLICY]

Атрибут загрузки loading является атрибутом ленивой загрузки. Его цель — указать политику загрузки элементов iframe, находящихся за пределами области просмотра.

Когда состояние атрибута загрузки loading изменяется на состояние Eager, пользовательский агент должен выполнить следующие шаги:

1. Пусть resumtionSteps будет шагами отложенного возобновления загрузки элемента iframe.
2. Если resumtionSteps имеет значение null, тогда верните.
3. Установите для шагов возобновления отложенной загрузки iframe значение null.
4. Вызвать шаги возобновления resumtionSteps.

 

Потомки элементов iframe ничего не представляют. (В устаревших пользовательских агентах, которые не поддерживают элементы iframe, содержимое будет анализироваться как разметка, которая может выступать в качестве резервного содержимого.)

Примечание

Анализатор HTML обрабатывает разметку внутри элементов iframe как текст.

 

IDL-атрибуты — src, srcdoc, name, sandbox и allow должны отражать соответствующие атрибуты содержимого с тем же именем.

Поддерживаемые токены для DOMTokenList песочницы sandbox — это разрешенные значения, определенные в атрибуте песочницы sandbox и поддерживаемые пользовательским агентом.

IDL-атрибут allowFullscreen должен отражать атрибут содержимого allowfullscreen.

IDL-атрибут referrerPolicy должен отражать атрибут содержимого referrerpolicy, ограниченный только известными значениями.

IDL-атрибут loading должен отражать атрибут загрузки loading содержимого, ограниченный только известными значениями.

IDL-атрибут contentDocument при получении должен возвращать содержимое документа элемента iframe.

IDL-атрибут contentWindow должен возвращать объект WindowProxy вложенного контекста просмотра элемента iframe, если его вложенный контекст просмотра не равен null, или null в противном случае.

Пример

Вот пример страницы, использующей iframe для размещения рекламы от рекламного брокера:

<iframe src=«https://ads.example.com/?customerid=923513721&amp;format=banner» width=«468» height=«60»></iframe>

 

Информационные ссылки

Стандарт HTML (одно-страничная версия) — Раздел «4.8.5 The iframe element» — https://html.spec.whatwg.org/#the-iframe-element

Стандарт HTML (много-страничная версия) — Раздел «4.8.5 The iframe element» — https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element