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 вызывает.