【问题标题】:Once and for all, what does navigator.onLine do?一劳永逸,navigator.onLine 做了什么?
【发布时间】:2012-10-26 04:09:10
【问题描述】:

我看过一千个帖子,有人问如何在 javascript 中检测互联网连接,总是有人说要使用 navigator.onLine,而另一个人说它不可靠,只告诉你连接是否可用,而不是如果您已连接。

底线,navigator.onLine 会告诉我,即使 3G/4G 和 WiFi 已打开且未处于飞行模式或其他任何情况下,用户是否由于覆盖范围不佳而无法联系那里的服务器?只是你的平均死区。

【问题讨论】:

标签: javascript html


【解决方案1】:

来自MDN article about navigator.onLine

浏览器实现此属性的方式不同。

在 Chrome 和 Safari 中,如果浏览器无法连接到局域网 (LAN) 或路由器,则它处于离线状态;所有其他条件都返回 true。因此,虽然您可以假设浏览器在返回 false 值时处于脱机状态,但您不能假设 true 值必然意味着浏览器可以访问互联网。您可能会得到误报,例如在计算机运行具有始终“连接”的虚拟以太网适配器的虚拟化软件的情况下。因此,如果你真的想确定浏览器的在线状态,你应该开发额外的检查手段。要了解更多信息,请参阅 HTML5 Rocks 文章 Working Off the Grid

在 Firefox 和 Internet Explorer 中,将浏览器切换到离线模式会发送一个 false 值。所有其他条件都返回真值

【讨论】:

  • 好吧。如果它可靠地工作,这将是一个了不起的工具。感谢您的简洁摘录。
【解决方案2】:

根据 MDN,实现方式因浏览器而异。

https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine

我假设使用 WebKit 浏览器,它不是知道浏览器是否可以访问 Internet 的可靠方法,只是某种形式的网络访问。

【讨论】:

    猜你喜欢
    • 2016-07-20
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多