Обнаруживать и регистрировать, когда внешние ресурсы JavaScript или CSS не загружаются - PullRequest
7 голосов
/ 16 апреля 2011

У меня есть несколько <head> ссылок на внешние ресурсы js и css.В основном это для таких вещей, как сторонняя аналитика и т. Д. Время от времени (по неподтвержденным данным) эти ресурсы не загружаются, что часто приводит к тайм-ауту браузера.Можно ли обнаружить и войти в систему на сервере, когда внешние ресурсы JavaScript или CSS не могут быть загружены?

Я рассматривал некоторый тип ленивого механизма загрузки, который при сбое вызывал бы специальный URL для входа в систему.отказ.Есть какие-нибудь предложения?

Что, по-моему, происходит:

  1. Пользователь заходит на нашу страницу, и серверная часть успешно обрабатывает его и обслуживает страницу

  2. На стороне клиента заголовок HTML пытается подключиться к нашим сторонним партнерам по интеграции, обычно с помощью JavaScript, который начинается с "http://www.someothercompany.com. ..".

  3. Другая компания не может справиться с нашей нагрузкой или имеет дерьмовое время безотказной работы, и поэтому соединение не устанавливается.

  4. Пользователь видит универсальный IEСтраница не найдена, ни одна с нашего сервера.

Так что, хотя мой сайт был запущен, а все остальное работает нормально, просто потому, что этот вызов сторонних серверов не удался, одинв заголовке HTML-страницы мы получаем полный сбой при запуске.

Ответы [ 4 ]

4 голосов
/ 19 апреля 2011

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

var script = document.createElement("script");
script.type = "text/javascript";
script.src = 'http://domain.com/somefile.js';
script.onload = CallBackForAfterFileLoaded;
document.body.appendChild(script);
function CallBackForAfterFileLoaded (e) {
//Do your magic here...
}

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

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

Надеюсь, что это поможет, ура

1 голос
/ 16 апреля 2011

Вы можете искать наличие объекта в JavaScript, например, чтобы увидеть, загружен ли jQuery или нет ...

if (typeof jQuery !== 'function') {
   // Was not loaded.
}

jsFiddle .

Вы также можете проверить отсутствие стилей CSS, например, если вы знаете, что определенный файл CSS устанавливает цвет фона на #000.

if ($('body').css('backgroundColor') !== 'rgb(0, 0, 0)') {
   // Was not loaded.
}

jsFiddle .

Когда это не удается, вы можете сделать XHR на сервере для регистрации этих сбоев.

0 голосов
/ 14 мая 2019

А как насчет ServiceWorker?Мы можем использовать его для перехвата всех http-запросов и получения кода ответа, чтобы регистрировать, не загружается ли внешний ресурс.

0 голосов
/ 16 апреля 2011

Создайте хэш имени js и файла cookie сеанса и отправьте как имя js в обычном виде, так и хэш. На стороне сервера, сделайте один и тот же хеш, если оба журнала одинаковы, если нет, предположите, что это злоупотребление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...