仅在用户在线时重定向

Redirect only if user is online

我目前遇到了客户内联网的问题。 我们曾经有一个起始站点,其中一些 js 检查用户是否在线,如果在线,他将被重定向到我们 Intranet 的主页。 现在我正在测试与新的 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- 可能的解决方案,因为没有可用的 JQ-Library。 我很想听到一个简单的 EDGE 工作解决方案。

如果有简单的方法,请告诉我 - 我不是 Javascript..

的专业人士

谢谢! 山姆

以上意见值得考虑。这是一个kludge,而且总是很脆弱。正如评论中提到的,这里的一个主要陷阱是缓存。这可以通过将缓存破坏字符串附加到 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>

非常适合我的解决方案,因为我们只使用 Internet Explorer(至少有些人使用 firefox,但 Opera 在任何客户端上都不可用):

if (navigator.onLine) {
    window.location.replace("https://www.google.de");
    } 

感谢您的快速帮助!