Почему я не должен использовать фреймы HTML?

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

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

Во-первых, когда VPN подключен к моей сети, я постоянно получаю сообщение об ошибке «website.com/frames.html».

Во-вторых, приложение имеет встроенную систему электронной почты и обмена сообщениями. Количество непрочитанных сообщений отображается в левом фрейме меню как «Сообщения (3)», но счетчик не обновляется по мере чтения сообщений. Разработчик сказал мне, что, поскольку он был в рамке, мне нужно щелкнуть правой кнопкой мыши меню и «Обновить». Серьезно????

Итак, мой вопрос, связанный с программированием, заключается в том, по каким причинам вы не используете фреймы на веб-сайте?


person rvarcher    schedule 29.07.2009    source источник
comment
Я думаю, вы сами ответили на свой вопрос   -  person redsquare    schedule 30.07.2009
comment
Отчасти, но я также ищу ответы, отличные от моих.   -  person rvarcher    schedule 30.07.2009
comment
Кнопка обновления вашего браузера предназначена для главной страницы. Есть только один _main или _index, поэтому остальные нужно обновлять вручную, как если бы они были их собственными, потому что они на самом деле таковыми являются. Никто не ответил ниже, поэтому я подумал, э... было весело пробежаться по истории Интернета :)   -  person Stephen J    schedule 18.10.2012
comment
Метку можно обновить с одного кадра на другой с помощью javascript: stackoverflow.com/questions/6981349   -  person Gringo Suave    schedule 16.12.2020


Ответы (8)


Несмотря на то, что они решили проблему во время их создания (обновление части «страницы» при сохранении необновляемой части), наборы фреймов с самого начала подвергались критике с точки зрения удобства использования, поскольку они нарушают общие функции фреймворка. браузер, например:

  • создание закладок и копирование и вставка URL-адресов для обмена
  • печать страницы, отображаемой на экране
  • перезагрузка страницы: поскольку URL-адрес обычно не меняется, вы часто будете возвращаться на домашнюю страницу сайта или на набор фреймов по умолчанию; ручная перезагрузка некоторых кадров возможна, но не очевидна для пользователя
  • кнопки «назад» и «вперед» неоднозначны: отменить/повторить последнее изменение кадра или перейти к последнему времени изменения строки URL?

Самое тяжелое бремя избегания наборов фреймов — включая один и тот же контент на каждой странице — тривиально решается, если вы используете любой серверный язык для создания своего HTML, даже если все, что он предоставляет, — это «включение на стороне сервера». В отличие от наборов фреймов, включение на стороне сервера может происходить в любом месте страницы; создание сайта с помощью языка сценариев на стороне сервера или системы шаблонов имеет и другие очевидные преимущества.

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

person IMSoP    schedule 10.04.2013

Одной из веских причин избегать фреймов сегодня является то, что они объявлены устаревшими в HTML 5: Глава 11 Устарело особенности

11.2 Несоответствующие функции

Элементы в следующем списке полностью устарели и не должны использоваться авторами:

[...]

рамка

набор фреймов

без фреймов

Либо используйте вместо этого iframe и CSS, либо используйте включения на стороне сервера для создания полных страниц с различными объединенными неизменяемыми частями.

person Simon Mourier    schedule 13.05.2014

Причина №1? Пользователи их ненавидят.

Даже если они предлагают преимущества в других областях (разделение кода, дизайн приложения, скорость и т. д.), они являются частью пользовательского интерфейса. Если пользователи не одобряют, не используйте их.

person Spencer Ruport    schedule 29.07.2009

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

Оба эти аргумента уже устарели: сайты без колебаний обслуживают толстые страницы, и большинство из них построены динамически, поэтому включение таких навигационных частей (или статуса и т. д.) не вызывает проблем.

На часть «почему» хорошо ответили выше, частично на ваш собственный вопрос (вы наткнулись на ограничение, хотя его можно обойти с помощью JS).

person PhiLho    schedule 29.07.2009

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

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

person Peter Di Cecco    schedule 29.07.2009
comment
Самое смешное, что это новое приложение. Я не знаю, о чем они думали. - person rvarcher; 30.07.2009

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

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

Я уже слышу, как нытики говорят: «Ну, а зачем ты вообще тогда построил это таким образом?» ... и ответ A: Потому что я не ленивый. и B: потому что сайт на основе фреймов является наиболее функциональным, визуально привлекательным и удобным для пользователя форматом для информационного сайта с сотнями страниц контента, который не должен полагаться на сервер. Я имею в виду, что все, кроме внешней рекламы, можно смотреть прямо с флешки. Не требуется MySQL или PHP.

Вот некоторые из проблем, с которыми я столкнулся:

  • Возражение против потерянных страниц может быть легко обработано с помощью JavaScript.
  • Возражение по поводу закладок не имеет значения, если вы не используете все фреймы.
  • Закладки для конкретного контента можно обрабатывать с помощью функции JavaScript «Добавить закладку».
  • Возражение относительно SEO легко решается с помощью XML-карты сайта и JavaScript.
  • Разметка фреймов с динамическими размерами намного проще и надежнее со стандартными наборами фреймов.
  • Нацеливание и замена вложенных наборов фреймов из внешнего фрейма проще со стандартными наборами фреймов.
  • Внутренние скрипты, такие как поиск JavaScript и не зависящие от сервера корзины покупок, которые слишком сложны для файлов cookie, кажутся невозможными с iFrames, а если и существуют, заставить их работать гораздо сложнее, чем при использовании стандартных фреймов.

При всем при этом мне нравится привлекательность iFrames для одной страницы, и когда они действительно смогут делать все то же самое для моего сайта так же легко, как сейчас это делают стандартные фреймы, тогда я буду мигрировать. Между тем, эта чепуха о том, что они «устарели», так же утомительна, как и другие так называемые «апгрейды», которые они нам навязывают годами, не задумываясь об этом.

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

person IconMatrix    schedule 10.04.2013
comment
Единственный достойный момент, заложенный в этой тираде, заключается в том, что для автономного веб-сайта наборы фреймов представляют собой простую альтернативу обработке на стороне сервера. Однако для любого веб-сайта в Интернете ваше постоянное упоминание фреймов предполагает, что вы совершенно неправильно понимаете, почему наборы фреймов вышли из моды, что было в пользу а) включения общего контента на стороне сервера и б) динамического контента на основе AJAX внутри одна страница. - person IMSoP; 11.04.2013
comment
Вы, очевидно, заметили, что я упомянул об использовании сценариев на стороне клиента. Не все хотят или имеют технические возможности или деньги, чтобы нанять тех, кто это делает, для создания прекрасной функциональности, возможной со стандартными фреймами. Что касается непонимания iframe, это тоже часть проблемы. Сайт, который у меня уже есть, отлично работает с тем, что я понимаю, и понять это было легко по сравнению с тем, с чем я столкнулся, пытаясь перейти на iframe. - person IconMatrix; 11.04.2013
comment
Я не говорил, что вы не понимаете фреймы, я сказал, что вы не понимаете, что фреймы — это не то, что большинство людей использует для замены функциональности наборов фреймов. Для этого люди используют генерацию страниц на стороне сервера и AJAX. - person IMSoP; 11.04.2013
comment
Достаточно справедливо, но немного неправильно. Позвольте мне уточнить. Я сделал комментарий в ответ на людей, которые говорят, что iframes могут делать все, что могут наборы фреймов, что вы будете часто сталкиваться в качестве обоснования отказа от использования стандартных наборов фреймов, и что побудило меня изучить iframes как вариант для обновления сайта. потому что они в последних стандартах. В этом контексте, я думаю, ваш комментарий имеет смысл для тех, кто уже знает. Но для тех, кто создавал сайты до того, как стало популярным все серверное программирование, это совсем другая история. - person IconMatrix; 11.04.2013
comment
Хорошо, я никогда не слышал эту строчку, но это объяснило бы ваше непонимание. Во всяком случае, у фреймов есть все те же проблемы, что и у наборов фреймов, и они, конечно, не панацея. Другое большое недоразумение в вашем посте заключается в том, что это как-то связано с мобильными браузерами; На протяжении многих лет наборы фреймов считались плохой идеей, и удаление их из стандарта HTML5 на самом деле просто акт уборки. - person IMSoP; 11.04.2013
comment
Наборы фреймов никогда не были плохой идеей. Если что, то совсем наоборот. Они очень полезны при правильном применении и в правильных обстоятельствах. Например, если вам нужен обширный указатель с независимой прокруткой сбоку страницы. Но это то, что мобильные телефоны и большинство портативных устройств (кроме ноутбуков) отображают не очень хорошо. По иронии судьбы весь технический прогресс свел функциональность веб-сайтов к наименьшему общему знаменателю. Это и/или несколько версий и/или приложений для разных устройств. - person IconMatrix; 11.04.2013
comment
Очевидно, что плохая идея — это субъективное утверждение, но для большинства, если не для всех вариантов использования наборов фреймов в течение долгого времени существовали альтернативы, и подавляющее большинство веб-сайтов не используют наборы фреймов или не нуждаются в них. Ваш последний пример может быть выполнен с использованием свойства CSS overflow, среди прочего подходит. - person IMSoP; 11.04.2013
comment
@IMSoP Именно то, что вы сказали в своем первом комментарии. Я делаю руководства пользователя программного обеспечения в формате HTML (они выглядят красивее для пользователя). Я использую рамки, левая часть — это область содержимого с расширяемыми списками, а правая часть — руководство пользователя для каждого элемента. Также с помощью некоторых манипуляций с javascript и URL-адресом вы можете открыть определенную часть веб-страницы, как если бы пользователь перешел к ней и сохранил логику фрейма. - person John Demetriou; 15.01.2015

Они почти всегда злят людей. Что еще тебе нужно?

person Nosredna    schedule 29.07.2009
comment
Они действительно сделали это. Я думаю, что имею дело с разработчиком, который очень оторван от опыта конечного пользователя. - person rvarcher; 30.07.2009

Рамки действительно полезны в некоторых случаях. Если вы создаете локальную веб-страницу, предназначенную только для чтения, без интерактивности, и веб-сайт не будет общедоступным в Интернете, все причины не использовать фреймы удаляются. Например, в руководстве пользователя для приложения, которое разработано исключительно в формате html, фреймы действительно полезны для сохранения оглавления слева простым и легким для кодирования способом. Кроме того, если у вас есть правильная навигация по веб-сайту, двусмысленность кнопки «Назад» полностью устраняется.

person John Demetriou    schedule 06.09.2014
comment
Какой бы хорошей ни была ваша навигация, она не умаляет полезности кнопки «Назад», потому что разные пользователи хотят перемещаться по-разному, и вы должны поддерживать как можно больше способов, а не независимо от того, какой способ (s) вам больше нравится. При разработке ленты Office инженеры Microsoft обнаружили, что, хотя копирование и вставка являются наиболее распространенными сочетаниями клавиш, они также (с огромным отрывом) являются наиболее распространенными нажатиями на панели инструментов, поэтому на ленте для них предусмотрены огромные кнопки. - person IMSoP; 23.02.2015
comment
Последние браузеры @IMSoP поддерживают кнопку «Назад» при навигации внутри фреймов........ И я говорю об автономных веб-страницах, а не на стороне сервера. Как воспроизвести этот эффект? - person John Demetriou; 23.02.2015
comment
Я согласен с тем, что фреймы — это простой способ добиться определенных целей в обстоятельствах, когда вы ограничены статическим HTML без логики на стороне сервера (или предварительной генерации из шаблонов). Я просто не согласился с вашим последним предложением: если у вас есть правильная навигация по веб-сайту, двусмысленность кнопки «Назад» полностью устраняется. - person IMSoP; 23.02.2015
comment
под двусмысленностью я имею в виду, что кнопка «Назад» не работает должным образом. Протестируйте его в браузере прямо сейчас. Он работает по назначению. Обновление, с другой стороны, не - person John Demetriou; 23.02.2015
comment
Хм, хорошо. Я не очень понял, что вы имели в виду под правильной навигацией, и двусмысленность устранена. Но да, браузеры лучше, чем раньше, придумывают для этого значимое действие. - person IMSoP; 23.02.2015