“离线”事件不会被解雇

时间:2018-05-03 10:21:42

标签: javascript jquery html5

我在javascript中有一个事件监听器附加到offline事件。在拔下以太网电缆或在调试器中设置offline模式但在其他情况下无法正常工作(如打开AIRPLANE MODE或断开wifi)时,此功能正常。

$(window).on('offline',function(){alert('offline')});

2 个答案:

答案 0 :(得分:0)

我认为你应该使用navigator.onLine

答案 1 :(得分:0)

多年后,我发现了一种更可靠的方法来附加事件以进行连接更改

navigator对象具有一个connection对象,而该对象又具有一个onchange属性,该属性希望在发生连接更改时执行一个回调方法

navigator.connection.onchange=function()
    {
        if(navigator.onLine)
        {
            console.log('Connection is okay')
        }
        else
        {
            console.log('Connection lost')
        }
    }

但是...根据MDN,navigator.onLine可能会返回误报

在Chrome和Safari中,如果浏览器无法连接到本地 局域网(LAN)或路由器,它处于脱机状态;所有其他条件 返回true。因此,当您可以假设浏览器处于脱机状态时, 它返回一个假值,您不能假设一个真值 必然意味着浏览器可以访问互联网。你可以 得到误报,例如在计算机处于故障状态时 运行具有虚拟以太网适配器的虚拟化软件 总是“连接”的。因此,如果您真的想 确定浏览器的在线状态,您应该开发 其他检查方法。