JavaScript navigator.onLine命令在Android手机上突然停止工作,不在Android浏览器中,也不在Chrome中!
在Android Galaxy中,一旦你进入飞行模式(或者没有互联网),你就会收到以下代码中没有互联网的通知-但你会立即收到一条消息,好像互联网又回来了。
例如,以下代码停止工作:
window.addEventListener('offline', function (e) {
alert('offline');
});
window.addEventListener('online', function (e) {
alert('online');
});
字符串
还有
navigator.onLine
型
总是返回true!
有人知道为什么会这样吗?
自己在Android上查看:https://codepen.io/Zvi-Redler/pen/JjeMLWR
或者有办法解决这个问题吗?
(Our QA团队发现,检查了几个设备,我们不知道有什么特别的更新。我做飞机模式,肯定没有网络,在过去它工作。)
4条答案
按热度按时间ds97pgxw1#
第一个窗口的离线事件,当网络发生变化时触发。第二个是navigator.onLine,它返回网络的当前状态。两者是不同的。
在三星Galaxy J7(2015)上,Chrome 104工作正常。在我加载页面并关闭数据后,显示当前网络状态的警报,因此窗口脱机事件工作正常。在点击按钮时,navigator.onLine返回true,如果我在线,否则返回false。
一切似乎都很好。
2cmtqfgy2#
您可以尝试使用其他事件的组合来检测联机/脱机状态,如文档对象上的联机和脱机事件,沿着使用setInterval进行定期检查以监视网络状态。
字符串
vcirk6k63#
字符串
不等于navigator.onLine
只要保留你的功能,并删除导航.onLine
ac1kyiln4#
您所描述的问题是Android操作系统中的已知错误。该漏洞是在Android 11中引入的,影响Android上所有版本的Chrome。当用户的设备失去网络连接时,该错误会导致
window.offline
事件不触发。目前没有解决此错误的方法。解决这个问题的唯一方法是等待Google发布针对该漏洞的修复程序。
与此同时,您可以使用以下解决方法来检测用户设备何时脱机:
字符串
此代码将检查用户的网络状态,并确定他们是联机还是脱机。如果用户离线,则将调用
offlineHandler
函数。我希望这有帮助!如果你还有其他问题请告诉我。
来源:Google Bard {https://g.co/bard/share/1238193b6d52}