仅当用户在线时重定向



我目前正在与客户Intranet遇到问题。我们曾经有一个开始站点,其中一些JS检查用户是否在线检查,如果可以的话,他被重定向到我们的Intranet的主页。现在,我正在测试与新的Microsoft Edge的兼容性,并发现自动重定向不再起作用了。您对如何检查用户是否具有有效的Internet连接然后重定向有任何想法?

当前解决方案是:

var myImg = new Image();
    myImg.src = "https://URL_of_our_intranet/images/blank.gif";
    myImg.onload = myImgOnLoadHandler;
    function myImgOnLoadHandler(e) {
        window.location =  "redirect-URL";
    }

整个代码都在每个用户本地系统上,并且由于没有JQ-Library可用,因此无法使用jQuery-solution。我很想听听一个简单且在Edge工作解决方案上。

如果有一种简单的方法,请让我知道 - 我不是JavaScript中的专业人士。

谢谢!sam

上述评论值得考虑。这是一个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");
    } 

感谢您的快速帮助!

相关内容

  • 没有找到相关文章

最新更新