当前位置: 首页 > 面试题库 >

如何检测在线/离线事件跨浏览器?

於炯
2023-03-14
问题内容

我正在尝试使用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。

最后,规格说明:

此属性本质上是不可靠的。可以在没有Internet访问的情况下将计算机连接到网络。



 类似资料:
  • 在渲染器进程中,使用标准HTML5 API实现在线和离线事件检测,例子: main.js 1 const {app, BrowserWindow} = require('electron') 2 ​ 3 let onlineStatusWindow 4 ​ 5 app.on('ready', () => { 6 onlineStatusWindow = new BrowserWindow({ wi

  • 使用标准 HTML5 APIs 可以实现在线和离线事件的探测,就像以下例子: main.js var app = require('app'); var BrowserWindow = require('browser-window'); var onlineStatusWindow; app.on('ready', function() { onlineStatusWindow = new

  • 在渲染进程中, Online and offline 事件检测,是通过标准 HTML5 API 中 navigator.onLine 属性来实现的。 脱机时 (从网络断开), navigator.onLine 属性将返回 false, 除此之外都返回true 。 由于所有其他条件都返回 true, 因此必须警惕信息误报, 因为我们不能保证 true 的情况下 Electron 一定可以访问 int

  • 概览 在渲染进程中,在线/离线事件 的探测,是通过标准 HTML5 API 中 navigator.onLine 属性来实现的。 navigator.onLine 属性返回值: false:如果所有网络请求都失败(例如,断开网络)。 true: 在其他情况下都返回 true 由于许多情况都会返回 true,你应该小心对待误报的情况, 因为我们不能总是假设 true 值意味着 Electron 可以

  • 问题内容: 您如何确定用户是否按下浏览器中的“后退”按钮? 您如何使用系统在单页Web应用程序内强制使用页内后退按钮? 到底为什么浏览器后退按钮不触发自己的事件!? 问题答案: (注意:根据Sharky的反馈,我提供了用于检测退格的代码) 因此,我经常在SO上看到这些问题,并且最近遇到了我自己控制后退按钮功能的问题。在为我的应用程序寻找最佳解决方案(带哈希导航的单页)几天后,我提出了一个简单的,跨

  • 实现 UIWebView 的离线浏览(缓存)功能。 作者说: 原理:将get请求的数据缓存在本地cache目录中,以后访问的时候直接从cache中获取数据。 备注:在初始化缓存的时候可以指定缓存的有效期时间长度,具体参看代码。在访问大数据网站(例如:cnbeta.com)的时候可能会导致闪退(个人猜想的原因是内存不足造成的),这个没有详细去追查原因,这里给出代码的目的是让大家明白离线原理。 [Code4App.com]