Вопрос корифеям JavaScript
27.01.2011 технологии
Сейчас делаю на тестовой страничке асинхронный запрос через динамическое создание тега script с параметрами, и вот почему-то FireFox после начала запроса так и остаётся в режиме ожидания ответа, хотя ответ уже получен.
Я что-то не так делаю или FF у меня какой-то корявый? «Опера» вот мгновенно мигает адресной строкой и всё, а FF оставляет такое неприятное впечатление. Как победить?
Пробовал выдавать в JS ответа удаление этого элемента script, но не помогает. FF так и пишет в строке состояния: Transferring data from example.com…
P.S. Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6.
P.P.S. Тестирую новую версию Daos с продвинутой защитой от накруток показов.
Обновлено через пару часов: оказывается, проблема в расширении Vimperator, его статусная строка работает не совсем так, как строка FF.
Комментарии
Комментирование этой статьи закрыто.
« Гарантированно неблокирующая загрузка Разрушать и убивать »
Хм, наверно Content-Length спасёт в заголовках? А как правильно сделать это? Сейчас проверю…
Но тогда если кто-то будет сервером делать GZIP-сжатие, всё поковеркается, наверно… Вот же дилемма. Не хватает мне знаний, ничерта не понимаю.
А всё равно если указать Content-Lenght ничего не меняется.
По-моему в фф просто остается постедний текст, о статусе выполнения запроса нужно судить из прогресс-бара, маленького в уголке, а текст не расчищается, последний остается висеть, в троечке по крайней мере…
Блин, но это неприятно, у пользователя ведь остаётся ощущение, что браузер продолжает чего-то делать. Как быть?
Ищу сейчас в буржунете, многие с этой проблемой сталкивались, а нормального решения пока не вижу. Усложняет ещё то, что я по-прежнему в JS дуб дубом. Хотя, вот уже с DOM-элементами могу творить всякое :) Прогресс есть.
А вот чувак вообще готов $100 заплатить за решение этой проблемы.
Не надо страдать, Тормоз, не надо думать что ты понимаешь что думают другие, они вообще на это внимания не обращают. Это до первой непонятки, откуда только берется эта глупая привычка тратить время на телепатию… Преждевременная оптимизация, так сказать, будут жалобы — будешь думать.
Да блин, я тоже пользователь, и лично мне неприятно видеть это ожидающее сообщение в статусной строке.
А на сам скрипт можно взглянуть?
Пока такая вот хрень получается. А counter.php выдаёт просто var response='OK'
Какой же FF тупой, а! Даже если вызываемый скрипт физически не существует (сервер дал ответ с кодом 404), он всё равно пишет Transferring data from… Пиздец какой-то :(
насколько я помню скрипты просто так не вставляются, надо там еще немного шаманства чтобы все ок было.
В каком смысле «не вставляются»? Элемент script создаётся, вызов происходит. Наверно придется просто запросы делать без вставки script, но это для меня сложнее.
Если не хочешь сильно заморачиваться – используй jQuery – очень здорово облегчит задачу. Если хочешь чистый js там тоже все не настолько сложно.
Ну уж нет. Не понимаю этой современной моды использовать огромных монстров для решения простейших задач.
Оказывается, три года уже мозилловцы даже и не думают пошевелиться. Такая вот фигня — https://bugzilla.mozilla.org/show_bug.cgi?id=383811
Хм, я в тудурулетке (строки 80-87) своей сделал что-то не так?
В смысле у меня там тоже скрипт на страницу вставляется, но вот строчечка, что «ожидание ответа от…» просто мелькает на совсем мало.
Или это от версии лисы зависит?
Как ты вставляешь скрипт?
Вставляй в <header>. Для примера смотри код аналитикса.
Rulexec, да, от версии зависит, видимо. У меня на твоей «Рулетке» тоже висит Transferring data from…
Lusever, выше есть ссылка на код. Какая разница, вставлять скрипт в header или в любое место body?
Тем не менее, я проверил — абсолютно никакой разницы нет, даже если в head вставлять также как Rulexec делает.
Лисичка то уж обновилась давно =)
3.6.13
если скрипт отрабатывает нормально, то сделай просто в скрипте обнуление значения статус бара :)
Flash.kosta, у тебя 3.6.13? Сделай скриншот вот этого сайта, пожалуйста. Вместе со строкой состояния.
Штудер, а так разве можно? Да и это придется ещё городить проверку браузера, и вообще коряво как-то.
Скриншот можно не делать. Я обновился до 3.6.13 — баг остался.
И, кстати, Штудер, http://javascript.ru/window.status. Забавно, что не только установить, но и получить значение невозможно — оно пустое.
Я тормоз-тормоз. Отключил плагин Vimperator и статусная строка ожила. FF не при чём, похоже, и у большинства пользователей будет всё нормально. Снова я убил дочерта времени на какую-то незначительную ерунду.
Бывает, не парься :)
А вообще код ничего, нормальный? Строчка теперь в DOM-дерево встраиваться будет, а не через допотопный document.write. Правда, никаких особых преимуществ это не даёт.
Ну как, теперь твой скрипт будет возможно вставить в xHTML-документ (и такие бывают, да о_О).
Не понял, а почему раньше нельзя было? У меня в блоге xHTML, например.
Неправильные у тебя какие-то пчёлы, не должно.
document.write должен ломать всю страницу по-идее в xhtml, вроде как. Или просто браузеры справляются, хотя по концепту нельзя так.
Я про это не знал и не подозревал даже, мне посоветовали очень давно, я просто сделал — и оно у всех везде работало (и работает). Видимо, это тот самый случай, когда браузеростроителям было проще подчиниться, чем принципиально вредничать.