Wiki · Техническая оптимизация
Фреймы
Фреймы – это HTML-элементы, которые показывают внутри одной страницы другой документ со своим адресом. Старые фреймы (frameset и frame) делили окно браузера на независимые части и сейчас считаются устаревшими, а встроенный фрейм iframe используют для карт, видео, виджетов и платёжных форм.
В начале 2000-х так собирали целые сайты: меню слева, шапка сверху, содержимое в середине, и каждая часть грузилась отдельным файлом. Адрес в строке браузера при переходах не менялся, ссылку на нужную страницу было не отправить, а поисковик приводил человека в средний фрейм без меню. Сейчас frameset в стандарте HTML числится среди устаревших элементов, а iframe встречается постоянно: в нём живут карта на странице контактов и видео в карточке товара.
Как устроены фреймы
Фрейм работает как окно в другой документ. Браузер загружает его отдельным запросом, со своими стилями, скриптами и cookies. Два варианта для сравнения:
<!-- устаревший вариант: окно делится на части --> <frameset cols="25%,75%"> <frame src="menu.html"> <frame src="content.html"> </frameset> <!-- iframe: встроенный документ внутри обычной страницы --> <iframe src="https://example.ru/map/" width="600" height="400" loading="lazy" title="map"></iframe>
У страницы на frameset нет обычного тела: окно целиком состоит из фреймов. iframe, наоборот, вставляется в любое место обычной страницы, как картинка. Атрибут title в примере стоит не для красоты: без него программа экранного доступа зачитает фрейм как безымянный блок, и человек не поймёт, что внутри.

Как поисковики видят фреймы
Для робота содержимое фрейма остаётся отдельным документом по адресу из src. Яндекс в справке пишет, что индексирует контент, который загружается во frameset и frame, и позволяет найти исходный документ по содержимому фреймов. Отсюда старая беда: в выдачу попадает внутренний фрейм, и человек приходит на голый текст без меню и шапки.
С iframe то же самое. Текст внутри встроенного документа принадлежит другому адресу, часто другому сайту, и рассчитывать, что он добавит релевантности вашей странице, не стоит. У Google есть правило indexifembedded: если встраиваемая страница закрыта тегом noindex, оно разрешает индексировать её содержимое в составе страницы, которая её встроила. Это настройка владельца встраиваемого контента, и решает её он, а не вы.
Вывод простой: основной текст, меню, каталог и ссылки держат в HTML самой страницы, тогда индексация идёт без сюрпризов. Во фрейм выносят то, что берут у других сервисов.

Где iframe уместен, а где нет
| Задача | iframe | Почему |
|---|---|---|
| Карта проезда | подходит | карта живёт на сервисе карт, адрес текстом остаётся на странице |
| Видео в карточке товара | подходит | плеер грузится с видеохостинга, описание пишут рядом |
| Форма записи или оплаты стороннего сервиса | подходит | данные уходят прямо в сервис |
| Магазин с конструктора, каталог или блог с другого домена | не подходит | для поиска этих страниц на вашем сайте нет |
| Меню и основной текст | не подходит | робот не свяжет их со страницей |
С формами во фрейме есть подвох для аналитики. Метрика сама не увидит отправку заявки: счётчик страницы не видит событий внутри чужого фрейма, поэтому цель настраивают через сам сервис записи или оплаты.
Встраивание, настройка и замена фреймов
Как вставить на страницу карту или видео через iframe?
Сервис карт или видеохостинг обычно сам выдаёт готовый код с тегом iframe. Вставьте его в HTML страницы, в CMS для этого есть режим кода или блок для произвольного HTML. Затем проверьте три вещи: заданы ли ширина и высота, стоит ли ленивая загрузка для блока ниже первого экрана и есть ли понятный title.
Почему вместо чужого сайта во фрейме пустое окно?
Скорее всего, тот сайт запрещает встраивать себя заголовком X-Frame-Options или правилом frame-ancestors, и браузер честно показывает пустую рамку. Причина видна в консоли инструментов разработчика. Обойти запрет со своей стороны нельзя: остаётся ссылка или официальный виджет. Вторая частая причина: адрес во фрейме начинается с http, а ваша страница открыта по https.
Как растянуть iframe на всю ширину экрана телефона?
Задайте фрейму в CSS ширину 100%, а высоту привяжите к пропорциям свойством aspect-ratio, для видео обычно 16 / 9. Тогда плеер сжимается вместе с экраном и не вылезает за край. Карте пропорции не так важны, ей хватит фиксированной высоты.
Как сделать, чтобы ссылка открывалась внутри iframe?
Дайте фрейму имя атрибутом name и укажите это же имя в атрибуте target у ссылки. Так когда-то связывали меню и содержимое на frameset, сейчас приём встречается в основном во внутренних интерфейсах.
Где посмотреть адрес документа, который загружен во фрейм?
Найдите в коде страницы тег iframe: адрес встроенного документа записан в атрибуте src, и его можно открыть в отдельной вкладке. В инструментах разработчика тот же тег виден на вкладке Elements, а на вкладке Network видно, какие запросы делает сам фрейм.
Чем iframe отличается от виджета, который подключают скриптом?
Скрипт виджета вставляет свои блоки прямо в вашу страницу: он видит её код, может менять оформление и навредить, если сервис взломают. iframe держит чужой код в отдельном документе. Зато виджет на скрипте проще подогнать по стилю и высоте, а отправку формы в нём легче отследить счётчиком.
Зачем атрибут sandbox и когда он ломает виджет?
Пустой sandbox запирает содержимое фрейма: запрещены скрипты, отправка форм, всплывающие окна и переходы в родительском окне. Нужные права возвращают по одному значениями вроде allow-scripts и allow-forms. Если виджет записи после этого перестал работать, ему не хватает какого-то разрешения, и консоль браузера подскажет, какого.
Как проверить, получится ли встроить ваш сайт в чужой фрейм?
Откройте страницу сайта с инструментами разработчика, на вкладке Network выберите сам документ и посмотрите заголовки ответа. X-Frame-Options со значением SAMEORIGIN или DENY либо Content-Security-Policy с frame-ancestors закрывают встраивание на чужих доменах. Если нет ни того, ни другого, страницу можно показать в чужом фрейме, а это лазейка для кликджекинга.
Как перевести старый сайт на frameset без потери позиций?
Сначала соберите адреса из индекса и аналитики: у таких сайтов в поиске часто стоят внутренние документы фреймов вроде content.html. Новый сайт делают на обычной вёрстке, а со старых адресов ставят 301 редиректы на соответствующие новые страницы. По сути это SEO-переезд, и готовят его так же.
Чем фрейм в HTML отличается от фрейма в Figma?
В HTML фрейм показывает внутри страницы другой документ со своим адресом. В Figma так называют контейнер макета: экран приложения, страницу сайта или отдельный блок, в котором лежат элементы. Общее у них только идея рамки, а работают они совсем по-разному.
Как фреймы замедляют страницу
Каждый iframe тянет за собой ещё одну полноценную страницу: свой HTML, стили, скрипты, шрифты. Плеер или виджет карты загружается, даже если до него никто не долистал. Страница контактов с тремя картами и двумя видео без ленивой загрузки сразу при открытии грузит пять дополнительных документов. Это бьёт по скорости сайта и метрикам Core Web Vitals.
- Добавьте
loading="lazy": фрейм ниже первого экрана загрузится, когда до него долистают. - Вместо плеера покажите обложку с кнопкой и подгружайте iframe по клику.
- Задайте ширину и высоту, чтобы блок не сдвигал страницу при загрузке. Подробнее в статье CLS.
Кликджекинг и защита от чужих фреймов
Фрейм работает в обе стороны: чужой сайт может встроить ваш. На этом построен кликджекинг, когда посетитель видит одну страницу, а кликает по спрятанной вашей. Защита ставится заголовком ответа сервера:
X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors 'self'
Оба варианта запрещают встраивать страницы сайта на чужие домены. Для сторонних виджетов на своём сайте есть обратная мера: атрибут sandbox ограничивает, что код внутри iframe может делать.
Как проверить фреймы на сайте
- Откройте код страницы (Ctrl+U) и поищите «frame». Нашлись frameset или frame: сайт пора переделывать.
- Для каждого iframe посмотрите, что внутри. Карта и видео в порядке, основной текст и каталог нет.
- В DevTools на вкладке Network оцените, сколько весят запросы из фреймов.
- Проверьте заголовки ответа: есть ли X-Frame-Options или frame-ancestors.

Фреймы, их вес и заголовки защиты смотрим на техническом аудите сайта. Защиту от встраивания и других атак настраиваем в услуге Информационная безопасность сайтов, а старые сайты на фреймах переводим на современную вёрстку при редизайне.
Документация и справки
- HTML Living Standard (WHATWG): элемент iframe, устаревшие элементы frameset и frame
- Справка Яндекс Вебмастера: индексирование документов
- Google Search Central: правило indexifembedded в мета-теге robots
- MDN Web Docs: X-Frame-Options, Content-Security-Policy frame-ancestors
См. также: Индексация сайта, Скорость сайта, Core Web Vitals, Хост.
Остались вопросы по теме «Фреймы»?
Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.
Отвечает по темеСергей ПимкинВедущий SEO-специалистНад статьёй работали
Услуги
Услуги по теме
Кейсы
Кейсы по теме
Маркетинг · Медицина, центр репродуктивной медицины
SEO-продвижение клиники «Три Сердца»
Посетителей в 5,5 раза большеНа январь 2025 года: 5 500 посетителей в неделю вместо 1 000, обращение стоит 60–70 ₽
Маркетинг · Медицина
SEO-продвижение медцентра «Медюнион»
10 000 обращений в месяц из интернета3 года работы, ноябрь 2018 – октябрь 2021: больше 1 000 фраз в ТОП-10 при цели 800
Тарифы
Тарифы по теме
Стартовый тариф для небольшого бизнеса: наводим порядок на сайте и получаем первые заявки из Яндекса и Google.
- Техническая оптимизация сайта
- Контентная оптимизация
- Семантическое ядро под город или регион
- Настройка Яндекс Вебмастера и Google Search Console
- Цели в Яндекс Метрике
- Ежемесячный отчёт по позициям, трафику и заявкам
- Оптимизация поведенческих факторов
- Оптимизация коммерческих факторов и E-A-T
Тариф для растущего бизнеса. Работаем на количество заявок: считаем звонки через коллтрекинг и дорабатываем сайт под конверсию.
- Техническая оптимизация сайта
- Контентная оптимизация
- Семантическое ядро под город или регион
- Настройка Яндекс Вебмастера и Google Search Console
- Цели в Яндекс Метрике
- Ежемесячный отчёт по позициям, трафику и заявкам
- Оптимизация поведенческих факторов
- Оптимизация коммерческих факторов и E-A-T
Для масштабирования бизнеса: SEO, A/B-тесты, карточки в Яндекс.Бизнесе и 2ГИС, техподдержка сайта. Нейросети берут на себя рутину, итог проверяют специалисты.
- Техническая оптимизация сайта
- Контентная оптимизация
- Семантическое ядро под город или регион
- Настройка Яндекс Вебмастера и Google Search Console
- Цели в Яндекс Метрике
- Ежемесячный отчёт по позициям, трафику и заявкам
- Оптимизация поведенческих факторов
- Оптимизация коммерческих факторов и E-A-T
Проверим ваш сайт бесплатно
Экспресс-аудит за 24 часа: скорость, индексация, мета-теги, коммерческие факторы и цели Метрики.


