Запрос на зависание кометы jsonp вызывает ужасное состояние «загрузки» в браузерах - PullRequest
2 голосов
/ 19 сентября 2010

Я использую jsonp для выполнения междоменных запросов комет, и состояние «загрузки» действительно раздражает.

Есть ли способ подавить это с помощью JavaScript?

Для тех, кто не знаком с jsonp, он в основном внедряет тег сценария, за исключением того, что в моем случае я вешаю запрос на своем сервере, не возвращая запрос до более позднего времени.

В это время браузеры видят мой запрос как состояние «загрузки».

Я использую это: http://code.google.com/p/jquery-jsonp/

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 19 сентября 2010

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

$(function () {
    setTimeout(function () {
        $.jsonp(...)
    }, 1000);
});
1 голос
/ 19 сентября 2010

Насколько я знаю, не существует способа подавить состояние загрузки с помощью Javascript, независимо от того, почему он у вас есть.

Однако существует хотя бы одна альтернатива для междоменного COMET, которая бы неt вызвать состояние загрузки в первую очередь.XMLHttpRequest не устанавливает статус загрузки, и, согласно моим тестам, спецификация CORS (Cross-Origin Resource Sharing), которая разрешает междоменный XHR, довольно хорошо поддерживается.

По сути, поддержка следующая: (Согласно сочетанию документации браузера и моих собственных тестов для проекта, над которым я работаю)

Полная поддержка в:

  • Gecko 1.9.1+ (Firefox 3.5, SeaMonkey 2.0и т. д. Проверено хорошо Firefox 3.6.8 и SeaMonkey 2.0.7)
  • WebKit (Safari 4+, Chrome 3+ и т. д.). Проверена работа на Safari 4 на OSX, Safari 5 на WinXP, Chrome 5.0.375.127 (Стабильный канал), Мидори 0.2.7, новый Флок , Богоявление 2.30.2, луакит и uzbl )

Не проверено, но должно поддерживаться полностью:

  • Fluid (MacOS на базе WebKit, альтернатива Mozilla Prism и Chrome "Создать ярлыки приложений ...")

Ограниченная поддержка в:

  • Internet Explorer8 (Microsoft реализовала вместо этого объект XDomainRequest () и, используя защиту в качестве предлога, не внедрила флаг для передачи учетных данных и файлов cookie с запросом)
  • Sleipnir (поддержка определенав какую версию MSHTML он встраивается)

Значительно не поддерживается:

  • Opera (по состоянию на 11.01.1190, вообще не поддерживается)
  • Camino (как2.0.5, все еще основанный на Gecko 1.9.0 (Firefox 3.0))
  • Arora (По состоянию на 0.10.2 наследуется API-интерфейс CORS WebKit, но имеется ошибка, приводящая к сбою запросов)
  • старая, основанная на Mozilla Flock (на основе Gecko 1.9.0 (Firefox 3.0)) *

Это не полный список, но я могу найти каждый браузер с поддержкой usercriptтестировать.Я уже нашел время, чтобы процитировать мои источники на странице CORS wikipedia , если вы хотите их.

Самое простое решение, о котором я могу подумать, - это проверка на CORS , а затем возвращайтесь к JSONP, чтобы люди, использующие современный браузер, получили идеальный опыт, а люди, использующие что-то более старое, рассматривали состояние загрузки как неизбежный побочный эффект.

Вот страница MDC на какCORS работает .

...