Почему некоторые сайты (например, Facebook) загружают скрипты в iframe? - PullRequest
11 голосов
/ 14 февраля 2010

Почему некоторые сайты (например, Facebook) загружают скрипты в iframe?

Это позволяет сайту загружать более 2 ресурсов одновременно, поскольку ресурсы iframe находятся по разным URL-адресам?

Ответы [ 4 ]

5 голосов
/ 14 февраля 2010

То, что вы видите, может быть приложением связи "Comet", использующим скрытый iframe в качестве канала данных. Краткое объяснение техники согласно Википедии :

Основной метод динамического веб-приложения - использование скрытого HTML-элемента IFrame (встроенная рамка, позволяющая веб-сайту встраивать один HTML-документ в другой). Этот невидимый IFrame отправляется в виде фрагментированного блока, который неявно объявляет его бесконечно длинным (иногда называемым «навсегда фреймом»). По мере возникновения событий iframe постепенно заполняется тегами сценария, содержащими JavaScript для выполнения в браузере. Поскольку браузеры отображают HTML-страницы постепенно, каждый тег сценария выполняется так, как он получен.

Это может быть использовано для чего-то вроде чата, где сообщения должны появляться без заметной задержки и предпочтительно без периодического опроса новых данных. Если это то, с чем вы столкнулись, вы должны увидеть несколько <script> элементов в кадре, и с течением времени должно быть добавлено больше элементов.

4 голосов
/ 14 февраля 2010

EDIT

Итак, чтобы ответить на ваш вопрос ... я не знаю! Однако может быть полезна следующая информация:

Facebook добавляет все переменные и функции JS к идентификатору вашего приложения.

var ID;

становится

var 1262682068026-ID;

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

Более подробная информация о сфере охвата здесь: Документы Facebook

1 голос
/ 14 февраля 2010

Они загружают кометные соединения (также известные как кометы, HTTP Push, долгоживущие и т. Д.) В iFrame, потому что Internet Explorer в конечном итоге отбрасывает его:

http://cometdaily.com/2007/10/25/http-streaming-and-internet-explorer/

Поскольку это, по сути, непрерывный длинный опрос, это блокировщик, этот хак также увеличивает ограничение на 2 соединения IE, приводя к лучшей скорости отклика, справочная информация:

http://alex.dojotoolkit.org/2006/02/what-else-is-burried-down-in-the-depths-of-googles-amazing-javascript/

1 голос
/ 14 февраля 2010

JavaScript, загруженный в iframe, не имеет доступа к объектам родительской страницы (междоменное ограничение)

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