Почему фреймы HTML плохие? - PullRequest
8 голосов
/ 19 июня 2010

Я знаю, что они есть, но мой коллега не верит мне. Он постоянно говорит мне, что Google сканирует внутренний контент и кеширует его просто отлично. По словам Google, он сканирует их, но не гарантирует, что сделает это правильно.

Есть мысли, почему фреймы плохи для общедоступных веб-сайтов?

Ответы [ 6 ]

5 голосов
/ 19 июня 2010

Существуют различные проблемы с удобством использования и доступности для фреймов:

  1. ссылка может открываться в фрейме, в котором она заключена (например, в боковой панели);
  2. может разбить вперед /обратная навигация;
  3. трудно добавить в закладки;
  4. не легко найти (вероятно, чтобы увидеть контент в Google и т. д.);
  5. перерыв в браузерах, таких как Lynx, которые* на основе консоли / терминала;
  6. трудно определить надлежащим образом (например, потребление высоты на широкоэкранных мониторах для баннерных рамок);
  7. может ломаться с помощью программ чтения с экрана и увеличителей (для слепых пользователей и пользователей с нарушениями зрения);

См. http://www.angelfire.com/super/badwebs/ для примера того, чего не следует делать.

4 голосов
/ 19 июня 2010

Кадры сложнее добавить в закладки и, следовательно, сложнее поделиться с другими.
http://www.yourhtmlsource.com/frames/goodorbad.html

3 голосов
/ 19 июня 2010

IFrames (например, HTML-таблицы) неплохие.Тем не менее, люди часто злоупотребляли ими, тем самым называя их дурными именами.

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

Проблема возникает, когда сценарию в одном из деревьев DOM необходим доступ к элементам в другом дереве.Или когда люди хотят сослаться на местоположение документа, которое является URL-адресом корневого документа, и не понимают, что им нужно местоположение вторичного документа.

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

Обновление : это пятница, и нам нужно немного повеселиться, поэтому вот (обязательно)ссылка на пост Джеффа о frames-busting-busters-busting ...: -)

0 голосов
/ 11 июля 2018

Идея, лежащая в основе фреймов, великолепна.

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

Сама концепция сохранения какой-либо части при смене другой просто необходима по логике веб-страниц. Нам нужно что-то, чтобы оставаться там, где оно было (как правило, навигация), в то время как мы проходим через множество деталей в основной области.

Реальные, практические проблемы с кадрами были другими:

Дизайнеры ненавидели их. Да, это была САМАЯ БОЛЬШАЯ практическая проблема. Все выглядело прямо и прямо. Они ненавидели это. Они хотели дуги и фоновые изображения и скругленные границы. Теперь у них это есть в CSS3 - угадайте, что, они снова рисуют минималистичные дизайны с прямыми линиями и прямоугольниками и сплошным фоном. Безотносительно.

У программистов возникли проблемы с ними. Следовать логике фреймов было неудобно, и вам пришлось проделать дополнительную работу. Я имею в виду, некоторые . Сегодня гораздо сложнее создать решения AJAX для той же проблемы, но это то, чем мы живем, и никто не жалуется. Безотносительно.

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

Кнопка Назад работала по-другому. Да, это было немного раздражает. Но опять же, это была не вина концепции фрейма: это сделали браузеры. Это можно было бы легко решить, но нет, браузеры продолжали возвращаться один за другим, не предоставляя сайту способ реализовать собственный метод «шага назад», и, увы, это все еще происходит сегодня. Безотносительно.

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

Я не ненавижу кадры; не пропустите их, они принадлежат к несколько устаревшему миру Интернета. Но они были хорошим решением для чего-то, и есть вероятность, что мы увидим нечто подобное в будущем, так же, как CSS-сетки вернулись, чтобы реализовать то, что макеты таблиц делали раньше. То же сообщество, которое ненавидит старое решение, с радостью примет новое и скажет вам, почему оно совсем не то же самое.

Реализации приходят и уходят; концепции остаются и развиваются.

Извините за бессмысленные части.

0 голосов
/ 16 октября 2016

Я знаю, что это старая тема, но ..

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

  1. Ссылка может открываться в рамке, в которой она находится (например, на боковой панели); Да, может, но если вы делаете это правильно, это не имеет значения. Фактически, фреймы могут быть очень полезны именно по этой причине, так как нажатие на ссылку обновит только фрейм, на который указывает ссылка, а не всю веб-страницу. Во времена модемов на очень медленных скоростях это было чрезвычайно полезно для экономии пропускной способности и придания веб-страницам сверхбыстрой скорости. Не забывайте, что сегодня в мире все еще есть люди (хотя и немногие), которые имеют очень ограниченное подключение к Интернету на очень медленных скоростях. (Люди на парусных шлюпках посреди океанов, те, кто твердо набирает номер в Интернете с помощью ВЧ-радио. Да, и те, кто живет в зонах военных действий, которые возвращаются к плохим сигналам мобильного телефона, или, возможно, даже должны подключиться к Интернету в другом используя их инфракрасные соединения на мобильных телефонах через модем)

  2. может нарушить навигацию вперед / назад. Да, может, но если вы сделаете это правильно, это не так.

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

  4. не легко найти (вероятно, чтобы увидеть контент в Google и т. Д.); сломать на браузерах, таких как Lynx, которые основаны на консоли / терминале; Уже покрыты кем-то еще ранее. Лично я никогда не слышал о Lynx (кроме дезодоранта). На самом деле было довольно полезно, чтобы страницы не были доступны для поиска, когда вы не хотели получать спам от ботов, ищущих адреса электронной почты ... К сожалению, Google или кто-то выяснил, как это сделать.

  5. Трудно правильно подобрать размер (например, потребление высоты на широкоэкранных мониторах для баннерных фреймов); Ясно, что тот, кто написал это, вряд ли имеет опыт использования фреймов. Именно поэтому я использовал фреймы, потому что я мог заставить их работать на любом размере экрана в том, что некоторые называют текучими представлениями в современном веб-дизайне

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

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

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

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

PS. Также обратите внимание, что календарь Google и YouTube позволяют вставлять страницы на веб-сайты, и оба они используют iframes.

0 голосов
/ 11 февраля 2011

В зависимости от того, что вы хотите сделать, большинство операций с фреймами можно выполнить с помощью CSS.Таблицы стилей CSS совместимы со всеми браузерами MODERN , что означает, что ваш веб-сайт будет выглядеть одинаково, если вы используете Firefox, Chrome или IE 7 (с некоторыми изменениями).Также обратная совместимость не является проблемой, так как пользователи могут просматривать контент даже при выключенном CSS (когда веб-сайт, использующий фреймы и без бескаркасной версии сайта, будет бесполезен для пользователя со старым браузером), он просто не будетбыть стилизованнымЭто также довольно легко учиться, и как только вы освоите его, вы удивитесь, почему вы не узнали его с самого начала.

...