[Html] Являются ли фреймы «плохой практикой»?


Answers

Это не плохая практика, они просто еще один инструмент, и они добавляют гибкость.

Для использования в качестве стандартного элемента страницы ... они хороши, потому что это простой и надежный способ разделить контент на несколько страниц. Специально для создаваемого пользователями контента может быть полезно «встроить» изолированные страницы в iframe поэтому плохая разметка не влияет на основную страницу. Недостатком является то, что если вы вводите несколько слоев прокрутки (один для браузера, один для iframe ), ваши пользователи будут разочарованы. Как и adzm, вы не хотите использовать iframe для первичной навигации, но подумайте о них как о тексте / разметке, эквивалентном тому, как будет встроено видео или другой медиафайл.

Для сценариев фоновых событий выбор обычно заключен между скрытым iframe и XmlHttpRequest для загрузки содержимого для текущей страницы. Разница в том, что iframe создает загрузку страницы, поэтому вы можете перемещаться назад и вперед в кеше браузера с большинством браузеров. Обратите внимание, что Google, который использует XmlHttpRequest повсюду, также использует iframe s в некоторых случаях, чтобы позволить пользователю перемещаться назад и вперед в истории браузера.

Question

Где-то вдоль линии я понял, что использование iframes - «плохая практика».

Это правда? Каковы плюсы и минусы их использования?




Оригинальная модель фреймов (Frameset и Frame-elements) была очень плохой с точки зрения удобства использования. IFrame - это более позднее изобретение, у которого не было столько проблем, как исходная модель набора фреймов, но у него есть свой недостаток.

Если вы разрешаете пользователю перемещаться внутри IFrame, ссылки и закладки не будут работать должным образом (поскольку вы закладите URL-адрес внешней страницы, но не URL-адрес iframe).




Работая с ними во многих случаях, я действительно думал, что iframe - это эквивалент веб-программирования инструкции goto. То есть чего-то вообще можно избежать. Внутри сайта они могут быть несколько полезными. Однако, кросс-сайт, они почти всегда плохая идея для чего угодно, кроме самого простого контента.

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

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

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

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




Они неплохие, но на самом деле полезны. Некоторое время назад у меня была огромная проблема, когда мне нужно было вставлять свой канал Twitter, и это просто не позволит md делать это на одной странице, поэтому я установил его на другую страницу и поместил его как iframe.

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




Основываясь на моем опыте, положительная сторона iframe при вызове кодов сторонних производителей, которые могут включать вызов javascript, который вызывает a, имеет Document.write(); команда. Как вы знаете, эти команды не могут быть вызваны асинхронно из-за того, как они анализируются (DOM Parser и т. Д.). Примером этого является http://sourceforge.net/projects/phpadsnew/ Я использовал iframes, чтобы ускорить наш сайт, поскольку было несколько вызовов phpadsnews, и сайт ожидал ответа, прежде чем приступать к части страницы. с iframe я смог разрешить сайту отображать другие части страницы и асинхронно вызывать команду Document.write() phpads. Предотвращение и блокировка js.




Links