【发布时间】:2020-01-26 14:24:09
【问题描述】:
我在移动设备和 Linux 上测试了以下代码,它正确地报告了在线状态变化。
<script>
function updateOnlineStatus(event) {
onlineStatusIndicator.innerHTML = navigator.onLine ? 'online' : 'offline';
}
window.addEventListener('online', updateOnlineStatus);
window.addEventListener('offline', updateOnlineStatus);
document.addEventListener('DOMContentLoaded', () => {
var onlineStatusIndicator = document.querySelector(
'#onlineStatusIndicator'
);
updateOnlineStatus();
});
</script>
当我在带有以下适配器的 Windows 10 上使用它时,单独关闭 wifi 适配器不会报告离线状态。我还必须关闭 vEthernet(默认开关)和 vEthernet(Docker/NAT)才能获得预期的行为。
因此,如果打开了 hyper-v,我们就不能依赖 wifi 连接更改来检测在线/离线状态,除非我们也在 vEthernet 适配器上执行相同的连接更改。对吗?
【问题讨论】:
-
也许实验性的Network Information API会给你更好的结果。
-
@Wendelin,我用网络信息API测试过,它响应谷歌开发工具的节流变化,但对Wifi状态变化仍然没有影响。
-
您能否告知我们,您使用哪个浏览器以及哪个版本的浏览器在 Windows 10 上进行了测试?您的 Windows 10 操作系统的操作系统版本是什么?它可以帮助使用特定的操作系统构建和浏览器进行测试。它可以帮助缩小问题范围。
-
我在 Windows 10 Pro 版本 1903(内部版本 18362.592)、Chrome 版本 79.0.3945.130(官方版本)(64 位)、新 Microsoft Edge(版本 79.0.309.71(官方版本))上运行了测试(64 位))和 Firefox 72.0.2(64 位)
标签: javascript google-chrome firefox microsoft-edge