Индикатор занятости браузера при загрузке данных - PullRequest
6 голосов
/ 27 марта 2012

Я пытаюсь добиться того, что было объяснено здесь .

Я пытаюсь загрузить некоторые данные с сервера на клиентскую сторону, используя динамические теги сценариев. (т.е. я создаю тег script, устанавливаю его src для моего контроллера JSON и добавляю его к моему тегу head или body).

скрипт корректно загружается с данными, возвращенными с сервера. Но во время загрузки скрипта, браузер не отображает индикатор занятости (пробовал с Chrome / Firefox) (хотя согласно эта ссылка (стр. 35), это должно быть поведение по умолчанию).

Кроме того, я добавил метод Sleep в свой метод на стороне сервера, чтобы имитировать длительный процесс, чтобы появился индикатор занятости. Но все равно не повезло.

P.s. Когда я использую IFrame вместо script, все работает нормально, и индикатор занятости отображается в браузере. но не могу сделать это с помощью тега script.

Ответы [ 2 ]

2 голосов
/ 15 августа 2014

Короче говоря:

Facebook ДОЛЖЕН использовать iframes при загрузке данных страницы, и в индикаторе загрузки браузера нет ничего волшебного.


Подробнее:

когда вы переходите с одной страницы на другую, FB вставляет скрытый Iframe в DOM, и его атрибут src будет установлен на запрашиваемую вами страницу (с парой параметров, указывающих, что это ajax-подобный запрос, а не полное обновление страницы). Таким образом, страница фактически загружается в скрытом фрейме Однако контент не является HTML, а представляет собой набор тегов javascript, которые используют некоторые объекты JSON, содержащие HTML и другие данные, необходимые для отображения страницы.
Ниже из моей консоли Firebug во время загрузки страницы, когда iframe внедряется в DOM. Вы можете проверить, что после завершения загрузки страницы, iframe удаляется.

facebook hidden iframe

Чтобы понять, как эти сценарии работают с данными страницы, вы можете прочитать о BigPipe Technique . Короче говоря, он разбил конструкцию каждой страницы на пару так называемых pagelets , которые имеют собственный набор ресурсов CSS и JS, поэтому ресурсы каждой страницы могут быть получать с сервера параллельно другим страницам. big_pipe удастся поместить каждую страничку в свой контейнер после того, как все его ресурсы станут доступны.

1 голос
/ 27 марта 2012

Асинхронная загрузка компонентов на веб-страницу не вызовет значок покупок в браузерах, отличных от IE.Даже то же самое для Facebook тоже.Попробуйте понравиться какой-нибудь пост или написать что-нибудь на стене, оба эти действия не будут отображать значок покупок в браузерах не-IE браузеров.

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