使用JavaScript检查互联网连接

Checking internet connection using JavaScript

本文关键字:连接 互联网 检查 JavaScript 使用      更新时间:2023-09-26

问题

如果WiFi关闭[即没有互联网连接],我想显示警报。在我的网页中,我有很多按钮、弹出窗口等。用户可以在离线时点击任何东西。但我想显示API调用是否失败。我可以在每次点击中检查navigator.onLine。但我不想写函数调用或行数。有没有什么常用jQuery、JS、Ajax的方法?

"当用户操作导致呼叫失败时,应显示警报"

类似于有错误的$.ajax。它不应该与任何div/页面绑定。

嗨,我尝试了以下操作:

navigator.onLine  // It works fine

我使用了下面提到的那个。但它不起作用。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><'/script>')</script>     

我提到的链接

是否检测到Internet连接处于脱机状态?

使用jquery 检查互联网连接

还有更多。

有什么建议吗?

navigator.online检查是否有网络,而不检查互联网。如果你连接到一个没有互联网的网络,它仍然会返回真正的

您可以使用ajax请求检查您的域

setInterval(function() {
  $.ajax({
    type: "HEAD",
    url: document.location.pathname + "?param=" + new Date(),
    error: function() {
      console.log(false);
    },
    success: function() {
      console.log(true);
    }
  });
}, 1000);

您可以在此处使用本机setInterval函数。例如,在document.ready函数中,或者在页面加载时提前加载的其他地方,使用一个设置的间隔:

setInterval(callbackFunction:,1000/*<--run function every interval in ms*/);

并编写回调函数(可能在setInteraval之上),类似于:

var callbackFunction = function(){
  if (navigator.online){
    //manipulate the DOM 
  }
};

如果您操作DOM,请记住将其放在document.ready()函数中,并且回调函数(如果在setInterval()调用之外定义)可能应该首先声明。

我发现了检查是否存在与YouTube的连接(例如)的最简单方法——从该网站加载一些javascript库,并检查它是否正确加载:

异步加载示例库(可能在文档中的脚本标记中):

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

该脚本不足1kB。当您需要在javascript中检查它时,请使用以下命令:

if (window.YT) 
   ...