Странное поведение jQuery $ (window) .load () в Safari - PullRequest
3 голосов
/ 26 марта 2010

У меня страница загружается в <iframe>.

Внутри <iframe> у меня есть функция, которая терпеливо ожидает загрузки страницы, используя событие $(window).load() jQuery, которое должно ждать до ALL содержимого страницы (изображения, javascript, css и т. Д. .) загружается перед стрельбой.

Затем функция вызывает обратно страницу, загружающую <iframe>, используя postMessage для отправки высоты содержимого в <iframe> назад.

Я проверил функциональность в IE7, IE8, Firefox 2, Firefox 3, Opera и Chrome, и все работает отлично. Когда я пытаюсь загрузить страницу в Safari, функция перезванивает перед загрузкой изображений ... что дает мне неверную высоту страницы.

Кто-нибудь знает, как заставить Safari ждать загрузки изображений перед вызовом функции (в этом случае предпочтительнее решения jQuery)?

1 Ответ

5 голосов
/ 27 марта 2010

Проверка смещения заставляет сафари завершить загрузку / компоновку контента, он блокирует JavaScript, пока не завершится возврат. Вы можете использовать это так:

$(window).load(function() {
  var block = document.body.offsetWidth;
  //Rest of code...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...