Перенаправить только если пользователь онлайн
В настоящее время у меня проблема с интранетом клиентов. У нас был стартовый сайт, где некоторые js проверяют, находится ли пользователь в сети или нет, и если это так, он перенаправляется на домашнюю страницу нашей интрасети. Сейчас я проверяю совместимость с новым Microsoft EDGE и обнаружил, что автоматическое перенаправление больше не работает. Есть ли у вас какие-либо идеи о том, как проверить, есть ли у пользователя действующее подключение к Интернету, а затем перенаправить?
Текущее решение:
var myImg = new Image();
myImg.src = "https://URL_of_our_intranet/images/blank.gif";
myImg.onload = myImgOnLoadHandler;
function myImgOnLoadHandler(e) {
window.location = "redirect-URL";
}
Весь Код находится в каждой Локальной Системе Пользователей, и JQuery-Solution не существует, поскольку JQ-Library не доступна. Я хотел бы услышать простое и на EDGE рабочее решение.
Если есть простой способ сделать это, пожалуйста, дайте мне знать - я не профессионал в Javascript..
Спасибо! Сэм
2 ответа
Решение, которое отлично сработало для меня, так как мы используем только Internet Explorer (по крайней мере, некоторые используют Firefox, но Opera недоступна на любом клиенте):
if (navigator.onLine) {
window.location.replace("https://www.google.de");
}
Спасибо за вашу быструю помощь!
Приведенные выше комментарии заслуживают рассмотрения. Это клудж, и он всегда будет хрупким. Как упомянуто в комментариях, основной ловушкой здесь является кеширование. Это можно обойти, добавив к URL-адресу строку очистки кэша. Я не думаю, что это так, но также возможно, что некоторые браузеры не будут загружать изображение, которое не является членом DOM, поэтому может потребоваться вставить его в DOM. Ниже приведен фрагмент кода:
function myImgOnLoadHandler(e) {
console.log('Connected! redirecting...');
}
function maybeRedirect() {
var myImg = new Image();
myImg.onload = myImgOnLoadHandler;
myImg.src = '//i.imgur.com/Jz49oEp.gif?' + new Date().getTime();
myImg.style.display = 'none';
document.body.appendChild(myImg);
}
document.querySelector('button').addEventListener('click', maybeRedirect);
<button type="button">Click me</button>