Подтвердить что ты не робот

Хорошие причины, по которым не использовать iframes в содержании страницы

Хорошо, поэтому я ищу некоторые веские причины, чтобы не использовать iFrames в содержании страницы. Мой друг, который настроен на использование iFrame для нашего чата и загружает html-страницу вместо того, чтобы просто использовать ajax для загрузки необходимых параметров и длительного опроса запроса. Когда у нас есть наши параметры, мы заполняем некоторые divs нашим контентом.


Мои самые большие причины

  • Зачем загружать две страницы одновременно

  • Требуется дополнительная кодировка для ввода iFrame

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


ps Я не был уверен, что это должно произойти в SO или MSO, если это необходимо, я могу переместить его

4b9b3361

Ответ 1

Источник: http://www.rwblackburn.com/2012/07/iframe-evil/

Итак, кажется, что на каждой работе, над которой я работаю, возникает одна тема. Кто-то, в какой-то момент, скажет: "Просто используйте iFrame для этого". Затем мне нужно спуститься по старой усталой дороге, почему это не будет хорошей идеей.

Хорошо, эта статья будет для меня немного утилитарной. Я надеюсь, что в одном месте все причины, по которым iFrames не являются излечимыми решениями, поэтому я могу сэкономить некоторое время в будущем и просто указать людям на этот URL. Поэтому я могу иногда обновлять этот пост, поскольку я уточняю эти моменты. Не стесняйтесь использовать этот пост для этой же цели, если хотите, и, пожалуйста, размещайте любые предложения или баллы, которые я пропустил на свою учетную запись Twitter (@rwbDev), не забудьте почитать, если я добавлю пункт к этой статье.

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

Плохо для SEO. Это одна из самых распространенных причин, которые вы найдете для того, чтобы избежать iFrames. Некоторые поисковые системы могут испытывать трудности со страницами, указанными в iFrames. Насколько это влияет на ранжирование поиска сайтов или страниц, не полностью известно. Однако большинство экспертов, с которыми я говорил, согласны с тем, что это определенно оказывает определенное влияние. Проверьте это интересное сообщение о форме на тропике. Для подробностей о том, как работает SEO, и о влиянии проектных решений, подобных этому, я бы предложил проверить seomoz.org. Это, конечно, не проблема, если SEO не беспокоит вашу страницу или приложение. Например, приложение, для которого требуется логин (все страницы за регистрацией не доступны для поисковых систем). * Примечание (добавлено 6 июня 2013 г.): Недавние тесты показали, что поисковые системы могут фактически следовать ссылкам в iFrame. Это означает, что влияние SEO iFrame намного меньше, чем в прошлом. Пока неясно, что нет никакого влияния, и разные поисковые системы могут вести себя по-другому в этом отношении.

Связывание/закладки. Если вы не добавите дополнительный JavaScript, пользователь не сможет получить ссылку непосредственно на контент в iFrame. Сюда входят ссылки, которые кто-то может отправлять друзьям, закладкам или страницам, которые появляются в результатах поиска. Представьте, что ваш пользователь переходит на вашу страницу, а некоторый контент находится в iFrame. Они нажимают ссылку в контенте iFramed. Этот контент останется в iFrame, как и ожидалось. Теперь ваши пользователи обнаруживают какой-то контент, с которым они перешли в iFrame, и хотели бы отправить его другу. Но копирование URL-адреса в их браузере не будет работать, что просто отправит друга на начальную страницу с исходным содержимым, отображаемым в iFrame. Есть сценарии, которые могут обойти это. Я сам их реализовал несколько раз (в ситуациях, когда у меня не было выбора). Однако они часто вводят некоторые из их собственных проблем и часто имеют проблемы с совместимостью между браузерами. Часто это тоже неправильно. Опять же, в зависимости от вашего сайта или потребностей ваших приложений, это может не быть проблемой, но это большая проблема для большинства сайтов.

Сложность с отладкой. Это тот, который люди часто пропускают. Если у вас есть надежное приложение со сложными jQuery, Ajax и другими интересными вещами, происходящими по всей странице, iFrames может значительно затруднить отладку проблемы. Происходит ли ошибка на внешней странице или на странице внутри фрейма? Инструменты разработчика браузера могут помочь в этом, но даже эти инструменты не всегда дают понять, где проблема, когда вы имеете дело с iFrame. Вы были бы удивлены, как часто ошибка может быть реплицирована, когда страница находится в iFrame, но отлично работает при загрузке вне iFrame. Это проблема для любого сайта. Но особенно для сайтов, которые широко используют iFrames. Чем больше движущихся частей для системы, тем сложнее диагностировать проблему.

Нет реальных выигрышей в производительности.Через некоторое время я найду кого-то, кто захочет использовать iFrame, потому что они чувствуют, что это увеличит производительность своих сайтов. Они обычно чувствуют себя так, потому что это позволит избежать перезагрузки заголовков/нижних колонтитулов/меню сайта всякий раз, когда сайт разбивается на страницы. Чаще всего обратное верно. Фактически, по моему опыту, он никогда не приводил к увеличению производительности по сравнению с архитектурой приложений. Во-первых, подумайте, что браузеры будут кэшировать изображения, CSS и JS файлы. Поэтому они не будут перезагружаться с каждой страницей. Но что более важно, люди, которые так думают, часто смотрят на iFrames, как если бы они были бедными мужчинами AJAX. Тем не менее, содержимое iRrame paginating почти всегда будет тяжелее, чем истинный вызов AJAX, который использует XML или JSON для загрузки и обновления только небольших частей содержимого страниц.

Просто трудно сохранить стабильность. Существует большой сайт из моей прежней работы, которая широко использовала iFrame. Я не уверен, где NDA применяется здесь, поэтому я не буду ссылаться на их сайт, чтобы быть в безопасности. Они часто используют их и имеют все сценарии и причудливые трюки, используемые (теоретически), чтобы избежать обычных недостатков использования iFrames. Однако есть все еще частые проблемы и ошибки, возникающие на их сайте из-за чрезмерного злоупотребления и чрезмерного использования iFrame. Были также частые жалобы клиентов, размещенные на форумах, LinkedIn, Twitter и т.д., О проблеме, вызвавшей их. Только сейчас я перепрыгнул на их сайт и через несколько минут нашел страницу, которая дала мне ошибку из-за проблемы iFrame. Это умные люди, которые хорошо знают проблемы с iFrames. Но даже они продолжают бороться с этим, спустя годы. Когда iFrames подвергаются насилию, как на этом сайте, никакие причудливые сценарии не будут полностью устранять проблемы, которые неизбежно возникнут.

Ответ 2

iframes добавляют гибкость контексту страницы, поскольку они представляют собой простой и надежный способ разделить контент на несколько страниц. он также может быть полезен для внутренних страниц "песочницы" в iframe, поэтому слабая/отсутствующая разметка не повлияет на главную страницу.

Недостатком является то, что если вы вводите несколько слоев прокрутки (один для браузера, один для iframe), пользователи будут разочарованы.

Ответ 3

Некоторые браузеры не поддерживают iFrames. В iFrame на вашем веб-сайте может быть ваш контент, с другим содержимым веб-сайтов, но контент может меняться в любое время, на материал, который вы можете или не одобрите. Некоторые проблемы, если пусто. Блокирует перезагрузку страницы, которая нежелательна, а не семантическая

Вы не можете заставить CSS взаимодействовать между IFrame и родительской страницей, если вы сами не управляете самими стилями. Как упоминалось выше, это правда, что

Мы не можем получить хорошую производительность с помощью я Frame. Некоторые поисковые системы могут испытывать трудности со страницами, указанными в я Frames. Насколько это влияет на ранжирование поиска сайтов или страниц, не полностью известно. Мое предложение состояло в том, чтобы сначала использовать все остальные варианты. Не переходите к решению iFrame, потому что оно кажется легким на поверхности.

Ответ 4

Источник: Использование или отсутствие итерации iframes

Важными причинами являются:

  • медленная производительность.
  • блок iframes onload событие.
    Событие onload в основном используется веб-разработчиками для инициирования действий пользовательского интерфейса, например, фокуса при входе в систему при загрузке.