<iframes> и изображения загружаются через AJAX с задержкой window.onload? - PullRequest
3 голосов
/ 31 июля 2011

Я пытаюсь сделать так, чтобы событие window.onload срабатывало быстрее, чтобы Google думал, что моя страница загружается быстрее (это неприятная задача, так как время, необходимое для того, чтобы добраться до window.onload, в основном не имеет значения с точки зрения пользователя,но я отвлекся)

Однако я не знаю, что задерживает событие загрузки!В частности:

  1. Если я загружаю лайкбокс Facebook на мою страницу в <iframe>, задерживает ли его загрузка событие загрузки?А что если iframe likebox должен загрузить кучу фотографий профиля;onload ждет, пока они полностью загрузятся?
  2. Предположим, что в готовом документе я делаю асинхронный AJAX-запрос на HTML-блоб и вставляю его на страницу.Если этот HTML-объект содержит набор тегов <img>, ожидает ли событие onload загрузки всех из них?

В общем, как браузер узнает, когда следует запускать событие onload?Какие вещи блокируют загрузку, а какие нет?

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Если вы посмотрите на водопад, в Firebug или Chrome инспектор, вызовы iframe и ajax действительно влияют на событие onload. Я столкнулся с подобной проблемой с Facebook, значительно замедляя сайт. Да, при просмотре времени загрузки страницы в инструменте для веб-мастеров он показывает отставание.

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

Это привело к увеличению времени загрузки моей страницы с 7 секунд со встроенным фреймом Facebook до 2,6 секунд с динамическим добавлением.

2 голосов
/ 31 июля 2011

а) Вы не можете контролировать window.onload, кроме как путем уменьшения «веса» страницы. Браузер сам решит, когда объявить это событие.

b) Google не имеет ни малейшего представления о событии window.onload, поскольку оно не анализирует JavaScript.

1) Вы можете полностью исключить полезную нагрузку Facebook, используя XFBML-версию кнопки «Нравится» и асинхронную загрузку Facebook JavaScript SDK (http://developers.facebook.com/docs/reference/javascript/FB.init/).. Обратите внимание, что это будет работать только при включенном JavaScript.

2) Все, что приведет к значительному увеличению веса вашей веб-страницы, должно загружаться асинхронно, предпочтительно после того, как событие window.onload сработало.

...