2009-08-13 3 views
2

Я работаю над плагином jQuery, который люди могут включать в свою собственную страницу. Плагин создает задания на службе, которую я использую, которая находится в другом домене.Tricky: Surpress «Loading ...» title в Firefox для опроса JSONP

Чтобы нарушить границу домена, я использую функцию JSONP jQuery, которая отлично подходит для нереста задания. Однако мне также нужно отобразить «прогресс» (0 -> 100%). До сих пор мой план состоял в том, чтобы постоянно «опросить» ход выполнения задания (комета была бы лучше, но AFAIK не может быть междоменным).

Проблема заключается в том, что опрос для прогресса каждую секунду заставляет Firefox постоянно мигать «Загрузка ...» в заголовке вкладки, которую я нахожу очень раздражающим. (Firefox делает это, потому что JSONP работает через теги скриптов, прикрепленные к DOM, которые затем «загружаются»).

Так мясо мой вопрос:

Можно ли surpress на «Загрузка ...» Вкладка заголовка сообщения - или - есть лучший способ «поток» обновляется прогресс в междоменная мода?

- Феликс Geisendörfer

ответ

0

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

Скажите, что средняя работа занимает десять минут. Вы можете определить, какой процент следует делать каждую секунду в среднем и поддельное обновление этой суммы полностью на стороне клиента.

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

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

+0

Да, это, по сути, то, что я закончил:). –

+0

Иногда лучше просто обмануть. :) – Mnebuerquo

0

К сожалению, вызов Ajax будет возвращать только после его завершения, так что нет никакого способа, чтобы он информировать вас о прогрессе.

Я бы рекомендовал использовать loading spinner или что-то в этом духе.

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

+0

Извините, если я не прояснил это. Это НЕ о ходе вызова AJAX. Речь идет о прогрессе задания, которое выполняется на моем сервере, и которое может быть опрошено с помощью вызова AJAX. –

+0

Gotcha, извините, я неправильно понял. И у меня также нет ответа для вас :( – idrumgood

0

CORS Поддержка становится довольно распространенной в наши дни. Теперь вы можете решить проблему должным образом, используя CORS для междоменного XMLHttpRequests, и нетрудно обнаружить отсутствие поддержки CORS и вернуться к JSONP для старых браузеров.

Есть пример кода обнаружения на этой первой ссылке, подробные сведения о том, как это работает on MDC, и, если вы хотите получить подробную информацию о совместимости браузера, я обновил the Wikipedia article несколько дней назад.

Суть его является:

  • Любой современный браузер WebKit (Safari 4+, Chrome 3+, новый Flock и т.д.)
  • Все Gecko 1.9.1+ (Firefox 3.5+, SeaMonkey 2.0+ и т. Д.)
  • Internet Explorer 8+ и все, что на нем основано (Sleipnir и т. Д.) ... с оговоркой, что он не реализует флаг для передачи учетных данных и файлов cookie с запросом.

Заметным исключением являются:

  • Opera (нет поддержки от 10.61)
  • Camino (2.0.5 основан на Gecko 1.9.0 (Firefox 3.0))
  • Арора (Начиная с Arora 0.10.2, он имеет API, но ошибка приводит к сбоям запросов)