iOS 7.1.1 Safari浏览器搞乱了在线/离线状态

时间:2014-05-12 15:23:17

标签: ios html5 offline-browsing

我针对可在多种浏览器上运行的网页进行跨浏览器在线/离线测试。 它适用于免费指标:

  • 窗口上的事件监听器
  • document.body上的事件监听器
  • 轮询navigator.onLine变量

http://jsfiddle.net/3mMfG/

window.addEventListener("online", function() {
    document.getElementById('test1').innerHTML = "online";
}, false);

window.addEventListener("offline", function() {
    document.getElementById('test1').innerHTML = "OFFLINE";
}, false);


document.body.ononline = function() {
    document.getElementById('test2').innerHTML = "online";
};
document.body.onoffline = function() {
    document.getElementById('test2').innerHTML = "OFFLINE";
};


setInterval(function () {
    if (navigator && navigator.onLine) 
        document.getElementById('test3').innerHTML = "online";
    else
        document.getElementById('test3').innerHTML = "OFFLINE";
}, 500);

我在几个iOS,Android或笔记本电脑浏览器上成功使用了这段代码。

在特定的iOS 7.1.1设备上,它不起作用。我已经在其他iOS 7.1.1设备上成功测试了它,但在这个特定的设备上,当离线时,几秒钟后(~5),所有指示器都会回到“在线”状态。

我已在多台设备上进行了测试,但只能在此特定设备上重现该问题。我使用“航班保存模式”按钮将其关闭,不允许使用wifi或蓝牙,但几秒钟后,在浏览器中触发在线事件,并且navigator.onLine变量变为true ...很奇怪... < / p>

如果您对发生的事情有任何疑问,我将很高兴与您交流。

如果您使用 设备测试该页面,请随时发表评论,让我知道它是否适用于您的设备。感谢

2 个答案:

答案 0 :(得分:1)

重置iOS设置应用中的网络设置已更正此行为......

答案 1 :(得分:0)

对我而言,它在iPhone 8加模拟器iOSv11上出错了。我不得不打开&#34;允许HTTP服务&#34;位于如下图所示,以获得navigator.onLine返回true -

在设置下 - &gt;开发者 - &gt; &#34;允许HTTP服务&#34;