Когда (мобильный) Safari / Chrome рассматривает страницу, загруженную с помощью Comet? - PullRequest
4 голосов
/ 22 октября 2010

У меня есть веб-сайт, использующий кометное соединение с длинным опросом. Соединение должно быть настроено на / после загрузки страницы.

Несмотря на мои усилия по предотвращению этого, многие браузеры считают, что запрос на длинный опрос является частью механизма загрузки страницы, поэтому страница находится в фазе загрузки. В Safari это приводит к тому, что индикатор выполнения (за полем URL) не завершается. В Chrome значок фаворита отображается как значок вращающейся загрузки. Еще более проблематичным является мобильное сафари на iphone, которое не позволяет скрыть поле URL во время «загрузки». Мобильный Android имеет похожие проблемы на некоторых устройствах.

В целом, поведение трудно воспроизвести и, кажется, зависит от браузера / платформы / скорости соединения / и т.д. Прямо сейчас мой код запускает длинный опрос 10msecs после триггера window.onLoad. Кажется, это часто работает хорошо, но не всегда. Я подозреваю, что это может быть связано с загрузкой некоторых внешних (image / javascript) ресурсов, но можно сказать, что событие onLoad вызывается после , они полностью загружены.

Кто-нибудь подскажет, как заставить эти браузеры считать мою страницу загруженной? В идеале можно как-то пометить xmlhttprequest как кометный, но это не особенность:).

Ответы [ 2 ]

4 голосов
/ 21 июня 2012

У меня возникла та же проблема, и я обнаружил, что если вы разрешите странице выйти из обработчика загрузки перед выполнением длинного запроса AJAX, все будет нормально, и страница не вернется всостояние загрузки.

Так, например, то, что обычно будет

$(document).ready(function() { $.ajax(...); });

, станет

$(document).ready(function() setTimeout(function() { $.ajax(...); }, 0); });

InВ частном случае WebKit я считаю, что $ (document) .ready является синонимом для window.onload.Вот почему это важно.

Это сработало для меня на iPad1,1 с iOS 5.

0 голосов
/ 28 апреля 2012

Мы успешно удалили индикатор загрузки в Safari 5.1.5 с длинными запросами ajax. К сожалению, Chrome по-прежнему постоянно показывает индикатор загрузки. Для chrome наша команда решила просто изменить значение курсора css на всем элементе тела (например, перекрестие или пользовательский курсор) - ужасный «хак» - но, по крайней мере, пользователь не увидит загружаемый курсор мыши, пока они находятся в системе.

...