我目前正在与客户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");
}
感谢您的快速帮助!