индикатор загрузки safari на iphone при длительном опросе

#javascript #iphone #ajax #xmlhttprequest #comet

#javascript #iPhone #ajax #xmlhttprequest #comet

Вопрос:

Я пытаюсь выполнить длительный опрос, используя XMLHttpRequest. он отлично работает во всех поддерживающих браузерах, но по какой-то причине в safari на iPhone я получаю индикатор загрузки при каждом вызове ajax, и при длительном опросе это немного раздражает.

Я читал, что вам нужно дождаться загрузки документа, но это не похоже на работу. любой другой известный способ решить эту проблему?

Комментарии:

1. 1 — Это раздражает, даже когда вы не проводите длительный опрос.

2. к сожалению, нет — у меня то же самое при просмотре страницы, на которой есть события, отправленные сервером.

3. Вы пытались использовать вместо этого веб-сокеты, например, что-то вроде socket.io ?

Ответ №1:

У меня была такая же проблема, я пытался использовать простой XHRO, скрытые iFrames и т.д., Это просто не работает на iPhone. Похоже, что он не обновляет DOM или ничего не делает, пока не будет загружен «весь» документ, который в моем примере был продолжительностью длительного опроса.

Единственное, что я не пробовал, это JSONP. Возможно, вы можете попробовать JSONP.

Пожалуйста, дайте нам знать, удалось ли вам попробовать JSONP и сработал ли он или работало ли что-нибудь вообще!

ОБНОВЛЕНИЕ: Я не знаю, почему это помечено как ответ, я так не думаю, поэтому, пожалуйста, дайте мне знать, как сделать это комментарием вместо ответа.

Комментарии:

1. Это ваш ответ на вопрос 🙂 но нет проблем, я попробую это как можно скорее и дам вам отзыв здесь, так что спасибо за ваш вклад 🙂

2. Я пробовал JSONP, но, похоже, у меня это не работает — у меня даже не получилось загрузить исходный код в :/

3. @Florian «У меня даже не получилось загрузить исходный код в», так что вы не смогли запустить JS, возвращенный сервером? Можете ли вы опубликовать какую-нибудь упрощенную версию своего кода? Я знаю, что длительный опрос — это большая проблема для выполнения работы, особенно в safari.. Мне бы очень хотелось знать, как работает Etherpad и / или Google chat.. Я подозреваю, что в настоящее время на iPhone они все еще используют периодические вызовы AJAX с коротким опросом.. Дай мне знать, братан..

Ответ №2:

У меня тоже была такая же проблема.

Заставить long-polling (или любой другой опрос на самом деле) работать во ВСЕХ браузерах — это пинок под зад. И особенно safari. Боже мой.

сокет.io — это решение.

Комментарии:

1. Я не могу это использовать, потому что мне разрешено разрабатывать только на стороне клиента, поэтому я могу создавать только JavaScript, PHP и HTML-структуры.

2. в этом случае вам, вероятно, следует рассмотреть возможность использования функции jQuery $.ajax () для выполнения задания вместо XMLHttpRequest. Я считаю, что у него лучшая совместимость с несколькими браузерами. Вы запускаете простой тест в safari с помощью $.ajax (), а затем создаете на его основе.