Чем плохи фреймы?
Время от времени мне попадаются сайты с фреймами. И также на каждом углу говорят, что фреймы - это плохо, а полную аргументацию этого утверждения найти затруднительно. Поэтому я решил написать эту статью, и дать подробный ответ на вопрос, чем плохи фреймы.
Я приведу просто список недостатков фреймов:
- Затруднённая оптимизация. Фреймы крайне плохо индексируются. И несмотря на постоянное развитие поисковых систем, всё равно сайты с фреймами котируются хуже, ввиду затруднённой оптимизации. Это особенно важно, если Вы делаете сайт не для того, чтобы друзьям показать, а для заработка на нём. А практически у любого сайта львиная доля трафика идёт с поисковых систем, поэтому к вопросам SEO надо относиться очень серьёзно.
- Нельзя корректно использовать мета-данные. Действительно, фрейм - это отдельная HTML-страница, которая обязана иметь заголовок, описание и ключевые слова. И вот тут возникает противоречение, ведь фрейм находится на другой странице, у которой также имеются мета-данные. Это, в первую очередь, сказывается на оптимизации под поисковые системы.
- Плохая кроссбраузерность и адаптация к различным разрешениям. Вёрстка фреймов очень сложная, поскольку каждый браузер реагирует на них по-разному. Кто-то, если фрейм не помещается, начинает его просто обрезать, кто-то создаёт полосу прокрутки. В общем, делают что хотят.
- Можно попасть внутрь фрейма. Пользователи, которые это увидят, мягко говорят, будут шокированы. Суть в следующем. Если фрейм всё-таки проиндексируется, то в поиске будет дана ссылка не на родительскую страницу, а на сам фрейм. Например, если Вы держите какую-нибудь статью во фрейме, то посетитель увидит просто текст. Никакого меню, никакой шапки и прочего он не увидит. А всё потому, что поисковая система дала ссылку на сам фрейм, где находится только текст статьи.
Но есть 2 классических задачи, почему фреймы всё-таки ещё используют. Первая - наиболее популярная, когда вытаскивают повторяющиеся блоки на сайте (например, меню, шапку, копирайты и прочее) в отдельный html-файл и через фрейм его подключают на каждой странице. Дело это безумно похвальное, потому что если на сайте, например, 1000 страниц, то захотев добавить ещё 1 пункт в меню, придётся исправлять 1000 страниц, что, конечно, неприятно. Но решается данная задача гораздо эффективнее через PHP и конструкцию require_once.
//Тут HTML-код
<?php
require_once("blocks/menu.html");
?>
//Тут HTML-код
Вот и вся проблема. Все преимущества удобства внесения изменений остались, а фреймы ушли.
И вторая задача, где постоянно встречаются фреймы - это динамически обновляющиеся блоки, например, окна чатов. Когда-то давно эта проблема была вообще без помощи фреймов не разрешима, но это время уже прошло. Сейчас есть DOM, есть JavaScript, в котором имеется POST-отправка. Всё это в совокупности позволяет реализовать любые динамические процессы. В конце концов, можно использовать JQuery и Ajax, если DOM не знаете, а просто через JavaScript отправлять POST-запросы считаете неудобным. Поэтому и эту задачу можно решить, не используя никаких фреймов.
Очень надеюсь, что теперь все, кто прочитает данную статью, откажутся от использования устаревших элементов и пойдут в ногу со временем.
-
- Михаил Русаков
Комментарии (14):
Михаил, статья Ваша - кстати. Вчера только озадачился вопросом обновления контента на сайте. Пишу сайт HTML+CSS. Я так понимаю, что нет такого инструмента (в пределах этих языков), который позволял бы автоматически изменять контент (шапку, меню, раздел новостей, например) на всех страницах сайта при изменении главной страницы? Понятно, что изменив меню на главной странице, на остальных оно не появится. Т.е. без PHP не обойтись?
Ответить
Да, к сожалению, не обойтись.
Ответить
я вспоминаю, лет таки 7 назад реализововал подобные вещи через JS. но с индексацией проблемы были. Насчет фреймов кстати я делал фоновую музыку на сайте (что бы при переходах не обрывалась)в невидемом фрейме. Это можно было как то решить без фрейма то?
Ответить
Вряд ли без фреймов получится проигрывать непрерывно. Даже если постоянно передавать проигрываемую в позицию в плеер, всё равно будут паузы.
Ответить
Ну видео-то и музыку в iframe делают нынче, это конечно совсем не те старые фреймы, однако и поныне работает прекрасно.
Ответить
Ну вообще-то можно. Чисто серверное <!--include virtual...> Но для этого нужен Apache + SSI
Ответить
Ну, так это - теже яйца только в профиль.
Ответить
что вообще такое фреймы?
Ответить
Один из набора HTML-документов, которые одновременно отображаются в окне браузера.
Ответить
Михаил, у меня появился странный и банальный вопрос: можно ли в качестве фрейма назначить PHP-скрипт?
Ответить
Можно какую угодно страницу туда поставить. И php в том числе.
Ответить
Михаил вы говорите во фрейме плохо,а уменя сайт такой(приобрёл,подкорректировал).Хочу его изменить при этом оставить расположение картинок,но в кмс не нашёл подходящих шаблонов и не знаю на чём его строить,с чего начинать изучение (сайт http://cvet-radugi.ru),посоветуйте пожалуйста!!! Иван Русаков,Волгоград.
Ответить
Да все сайты забиты ифреймами, в основном это скрытая реклама. Хотя мне кажется сейчас все браузеры умеют блочить ифреймы
Ответить
Интересно, а если вам понадобится изменить название файла menu.html - ТОГДА что вы станете делать? Будете править вручную те же самые 1000 файлов? По-другому-то это никак нельзя сделать (я имею в виду, добавить меню в страницы)? И чем запись <?php require_once("blocks/menu.html"); ?> лучше или хотя бы короче записи <iframe src="blocks/menu.html"></iframe> ???
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.