#javascript #firefox #google-analytics
Вопрос:
Проект, над которым я работаю, использует обработчик событий window.onerror для сообщения о проблемах пользователей. Я заметил одного пользователя, который, похоже, просто не может загрузить скрипт Google Analytics. Наш сайт не видит большого трафика, поэтому я не уверен, насколько широко это распространено, но пока, похоже, это влияет только на одного пользователя.
Его пользовательский агент: «Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17».
Firefox выдает сообщение об ошибке: «Ошибка при загрузке скрипта».
Дополнительное примечание: Сайт ссылается на несколько других файлов javascript. Однако ссылка на аналитику является единственной ссылкой на внешний домен и единственной ссылкой на сценарий в нижней части страницы, непосредственно перед закрывающим тегом тела.
Кто-нибудь еще сталкивался с этим или имеет какое-либо представление о том, в чем может быть проблема? Спасибо!
Ответ №1:
Эта проблема возникает при выходе со страницы в Firefox до того, как все скрипты завершат загрузку. Поэтому я предполагаю, что можно с уверенностью игнорировать ошибку.
Вы не видите эту ошибку в консоли ошибок Firefox, но вы можете сделать ее видимой, привязав предупреждение к событию window.onerror. Затем вы сможете увидеть окно предупреждения в течение небольшого промежутка времени и получить следующую ошибку в консоли ошибок:
[11:35:57.428] uncaught exception: [Exception... "prompt aborted by user" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource:///components/nsPrompter.js :: openTabPrompt :: line 462" data: no]
Я использую следующую проверку, чтобы игнорировать эту ошибку в моем обработчике ошибок:
if (navigator.userAgent.search('Firefox') != -1 amp;amp; message === 'Error loading script') {
// Firefox generates this error when leaving a page before all scripts have finished loading
return;
}
Комментарии:
1. Для тех, кто может использовать Airbrake/Hoptoad, могут быть полезны комментарии службы поддержки Airbrake: Переопределение Hoptoad.notify , бета-код для фильтрации ошибок
2. @rampr Я не думаю, что полностью безопасно игнорировать их все. Но до сих пор у меня было много ошибок «Ошибка загрузки скрипта», и за ними не было ни одной реальной проблемы, поэтому я предпочитаю их игнорировать.
Ответ №2:
Это довольно случайное предположение, но мне интересно, использует ли пользователь надстройку, такую как NoScript, для управления выполнением сценариев и не разрешает запускать сценарии из Google Analytics. Я знаю, что это возможно, потому что это то, что я делаю 🙂 Я не знаю, будет ли это отображаться как ошибка, которую вы видите.
Ответ №3:
У меня есть сайт с более чем 80 страницами, на всех которых используется отслеживание ошибок JavaScript. Мой сайт обслуживает более 2000 страниц в день, и каждый день я получаю около десяти ошибок сценариев «Ошибка загрузки» из браузеров Firefox. Это начинает меня по-настоящему раздражать, и я начинаю убеждаться, что это проблема в Firefox.
Я могу отклонить предложение NOSCRIPT, потому что скрипт загружается в заголовке моих страниц, где нет тегов NOSCRIPT.
Я могу отклонить предложение «внешний домен», потому что у меня есть два сайта, которые страдают от этой проблемы, и в обоих случаях файлы библиотеки JS расположены на собственном сервере сайтов.
Я тщательно проверил каждый файл библиотеки и веб-страницу с помощью JavaScript Lint и обнаружил ошибки в написании сценариев и сомнительные методы написания сценариев. Все эти проблемы были исправлены, но это не обеспечило какого-либо решения проблемы «Ошибка при загрузке скрипта».
Мои страницы загружают несколько файлов библиотеки JavaScript, у которых нет этой проблемы, и единственная разница заключается в размере файлов. Большинство файлов имеют размер менее 5 КБ, но файл проблемы составляет 17 КБ.
Может ли быть проблемой размер файла библиотеки?
Ага!
Ответ №4:
У нас была та же проблема, и после изучения наших журналов CDN мы обнаружили, что Firefox запускает событие onerror, когда скрипт возвращается со статусом HTTP «304 Не изменен», поэтому попадание в кэш. На самом деле Firefox (на момент написания этой статьи тестировался с Firefox 12), похоже, запускает событие onerror для всех статусов HTTP, кроме «200 Ok». Другие браузеры в нашем эксперименте вели себя по-другому: Chrome (19) запускал ошибку только при «Требуется проверка подлинности прокси-сервера 407», а Opera (12) — при 100, 101, 204, 4xx и 5xx.
Ответ №5:
Я уверен, что это давно решено.. но для всех, кто наткнется на эту страницу: эта ошибка запускается firefox, когда внешний скрипт не загружается (легко найти код, который запускает это в исходном коде). Мы ловили эти ошибки на нашем сайте, и оказалось, что мы возвращали 404 для сценария, поэтому я предлагаю посмотреть ваши журналы как один из возможных источников этой ошибки.