<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

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

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

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

iframe в HTML5: безопасное встраивание страниц, карт и видео

iframe в HTML5: безопасное встраивание страниц, карт и видео

iframe в HTML5 — это тег для встраивания одного HTML-документа внутрь другого. С его помощью добавляют YouTube-видео, карты, формы, калькуляторы, виджеты чатов, документы и внешние сервисы. Главная задача разработчика — встроить контент так, чтобы он был безопасным, доступным и не портил производительность страницы.

Базовый синтаксис iframe

Минимальный пример выглядит просто: указываем адрес во src, размеры и понятный заголовок через title. Атрибут title важен для доступности: скринридеры используют его, чтобы объяснить пользователю, что находится внутри фрейма.

<iframe
  src="https://example.com"
  width="600"
  height="400"
  title="Встроенная страница Example">
</iframe>

Не стоит вставлять iframe без размеров: браузеру будет сложнее заранее выделить место, а страница может «прыгать» при загрузке.

Когда iframe действительно нужен

Используйте iframe, если контент должен быть изолирован или приходит с внешнего сервиса:

  • видео с YouTube, Vimeo или другой платформы;
  • карта с маршрутом или отметкой компании;
  • внешняя форма бронирования, оплаты или заявки;
  • PDF-документ или интерактивный отчёт;
  • демо-пример кода в песочнице.

Если же вы просто хотите вставить свой HTML-блок, iframe обычно не нужен. Лучше сверстать компонент прямо на странице: так проще управлять стилями, адаптивностью и SEO.

Безопасное встраивание: sandbox

Самый важный атрибут безопасности — sandbox. Он включает ограничения для содержимого iframe: запрещает выполнение скриптов, отправку форм, открытие всплывающих окон и некоторые другие действия. Пустой sandbox включает максимально строгий режим.

<iframe
  src="https://example.com/widget"
  title="Внешний виджет"
  width="600"
  height="350"
  sandbox>
</iframe>

На практике внешнему виджету часто нужны отдельные разрешения. Их добавляют значениями атрибута sandbox:

<iframe
  src="https://example.com/form"
  title="Форма записи"
  width="600"
  height="500"
  sandbox="allow-forms allow-scripts allow-same-origin">
</iframe>

Распространённые разрешения:

  • allow-forms — разрешает отправку форм;
  • allow-scripts — разрешает выполнение JavaScript;
  • allow-popups — разрешает открывать новые окна;
  • allow-same-origin — позволяет фрейму считаться загруженным из своего исходного домена.

Совет: не добавляйте разрешения «на всякий случай». Чем меньше прав у iframe, тем ниже риск, если внешний сервис будет скомпрометирован.

Атрибут allow: доступ к функциям браузера

allow управляет доступом iframe к возможностям браузера: камере, микрофону, полноэкранному режиму, геолокации, автозапуску и другим API. Например, для видео часто нужен полноэкранный режим:

<iframe
  width="560"
  height="315"
  src="https://www.youtube.com/embed/dQw4w9WgXcQ"
  title="Видео на YouTube"
  allow="fullscreen; picture-in-picture"
  allowfullscreen
  loading="lazy">
</iframe>

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

Производительность: loading="lazy"

iframe может быть тяжёлым: он загружает отдельную страницу, стили, скрипты, шрифты и изображения. Для контента ниже первого экрана используйте ленивую загрузку:

<iframe
  src="https://maps.example.com/company"
  title="Карта проезда к офису"
  width="100%"
  height="400"
  loading="lazy">
</iframe>

loading="lazy" подсказывает браузеру загружать iframe не сразу, а ближе к моменту появления в области просмотра. Это помогает ускорить первичную загрузку страницы.

Адаптивный iframe для видео

Фиксированные размеры часто ломают мобильную вёрстку. Надёжный вариант — обернуть iframe в контейнер с заданным соотношением сторон через CSS.

<div class="video-frame">
  <iframe
    src="https://www.youtube.com/embed/dQw4w9WgXcQ"
    title="Обучающее видео"
    allow="fullscreen; picture-in-picture"
    allowfullscreen
    loading="lazy">
  </iframe>
</div>
.video-frame {
  aspect-ratio: 16 / 9;
  width: 100%;
  max-width: 800px;
}

.video-frame iframe {
  width: 100%;
  height: 100%;
  border: 0;
}

Свойство aspect-ratio удобно для современных браузеров: контейнер сохраняет пропорции, а iframe растягивается на всю доступную ширину.

referrerpolicy: контроль передаваемого адреса

Когда браузер загружает iframe, внешний сайт может получить информацию о странице-источнике. Атрибут referrerpolicy помогает ограничить эти данные.

<iframe
  src="https://example.com/embed"
  title="Встроенный сервис"
  width="600"
  height="400"
  referrerpolicy="no-referrer"
  loading="lazy">
</iframe>

Для приватных страниц можно использовать no-referrer. Для обычных публичных страниц часто подходит strict-origin-when-cross-origin: внешний сайт увидит только домен, но не полный URL.

Частые ошибки при работе с iframe

  • Нет title. Это ухудшает доступность для пользователей скринридеров.
  • Слишком много прав. Не выдавайте allow-scripts, allow-forms и доступ к API без необходимости.
  • Нет адаптивности. Фиксированная ширина 800px может сломать страницу на смартфоне.
  • Много iframe на одной странице. Несколько карт, видео и виджетов могут сильно замедлить сайт.
  • Встраивание ненадёжных источников. Используйте iframe только для сервисов, которым доверяете.

Готовый шаблон безопасного iframe

Ниже универсальный пример для внешнего виджета. Его можно адаптировать под карту, форму или интерактивный блок.

<iframe
  src="https://trusted-service.example/embed"
  title="Интерактивный виджет"
  width="100%"
  height="420"
  loading="lazy"
  sandbox="allow-scripts allow-forms"
  referrerpolicy="strict-origin-when-cross-origin">
</iframe>

Если виджет перестал работать после добавления sandbox, не отключайте защиту полностью. Сначала выясните, какое конкретно разрешение нужно, и добавьте только его.

Практическая рекомендация

Хорошая вёрстка — это не только красивые блоки, но и грамотная работа с внешними сервисами, безопасностью, адаптивностью и доступностью. Если хотите системно прокачать эти навыки и собрать полноценный сайт своими руками, обратите внимание на курс «Вёрстка сайта с нуля 2.0» — практический путь от макета до готовой страницы.

Итог

iframe в HTML5 полезен, когда нужно встроить внешний или изолированный контент. Для качественной реализации всегда добавляйте title, ограничивайте возможности через sandbox и allow, используйте loading="lazy" для тяжёлых блоков и делайте iframe адаптивным. Такой подход улучшает безопасность, доступность и скорость сайта.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.