Iframes vs ajax

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

  • Используйте вкладки jquery ajax (в основном заполняя div данными ajax) или
  • Каждая вкладка может содержать iframe и страницу, загруженные в нее.

Q1. Я не вижу разницы между двумя подходами к пользователю, есть ли?

Q2. Я думаю, что iframe-путь лучше, потому что iframe может загружать любую страницу, но иногда загрузка данных ajax в div может работать не так, как ожидалось.

Ответы

Ответ 1

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

Это также зависит от того, какие данные вы загружаете на свою страницу. Если вы контролируете загрузку html, вы можете избежать или исправить любые проблемы с отображением, которые могут возникнуть. Если вам нужно загрузить страницу вне вашего контроля, iframes будет лучше (или необходимо).

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

Ответ 2

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

Если страницы находятся вне вашего контроля (внешние сайты и т.д.), загрузите их в iFrames. Вам не придется беспокоиться о правильной обработке страниц и т.д.

Ответ 3

В iframe вы можете столкнуться с проблемами прокрутки, если содержимое загружено с внешнего сайта, а ширина и высота неизвестны заранее. С манипуляциями ajax и DOM у вас не будет этой проблемы.

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

Ответ 4

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

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

Ответ 5

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

Я думаю, что основной аспект выбора между iframes и ajax вызывает.