我正在尝试使用HTML5联机和脱机事件来准确检测浏览器何时脱机。
这是我的代码:
<script> // FIREFOX $(window).bind("online", applicationBackOnline); $(window).bind("offline", applicationOffline); //IE window.onload = function() { document.body.ononline = IeConnectionEvent; document.body.onoffline = IeConnectionEvent; } </script>
当我在Firefox或IE上单击“脱机工作”时,它工作正常,但是当我拔掉电线时,它是随机工作的。
检测此更改的最佳方法是什么?我想避免重复超时的ajax调用。
浏览器供应商无法就如何离线定义达成一致。某些浏览器具有“脱机工作”功能,他们认为这与缺少网络访问权限是分开的,这又不同于Internet访问。整个事情都是一团糟。当实际的网络访问丢失时,某些浏览器供应商会更新navigator.onLine标志,而其他浏览器供应商不会。
从规格:
如果用户代理肯定处于脱机状态(与网络断开连接),则返回false。如果用户代理可能在线,则返回true。 当此属性的值更改时,将触发联机和脱机事件。 如果用户代理在用户跟随链接或脚本请求远程页面(或知道这种尝试将失败)时不与网络联系,则navigator.onLine属性必须返回false;否则,必须返回true。
如果用户代理肯定处于脱机状态(与网络断开连接),则返回false。如果用户代理可能在线,则返回true。
当此属性的值更改时,将触发联机和脱机事件。
如果用户代理在用户跟随链接或脚本请求远程页面(或知道这种尝试将失败)时不与网络联系,则navigator.onLine属性必须返回false;否则,必须返回true。
最后,规格说明:
此属性本质上是不可靠的。可以在没有Internet访问的情况下将计算机连接到网络。