Перенаправить только если пользователь онлайн

В настоящее время у меня проблема с интранетом клиентов. У нас был стартовый сайт, где некоторые 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>

Другие вопросы по тегам