使用JavaScript检查互联网连接

时间:2014-10-10 06:52:51

标签: javascript jquery ajax

问题

我想在WiFi关闭时显示警告[即没有网络连接]。在我的网页中,我有许多按钮,弹出窗口等。用户可以在离线时点击任何内容。但我想表明API调用是否失败。我可以在每次点击中查看navigator.onLine。但我不想写多少函数调用或行。有没有办法通常使用jQuery,JS,Ajax?

"当呼叫失败时,应显示ALERT,这是由用户操作"

引起的

$.ajax一样有错误。它不应该与任何div / page绑定。

嗨,我尝试了以下内容:

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>     

我已提及的链接

Detect that the Internet connection is offline?

Check Internet connectivity with jquery

还有一些。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以在此处使用原生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()调用之外定义的回调函数可能应该首先声明,那么。

答案 1 :(得分:1)

navigator.online检查是否有网络,并且不检查互联网。如果您连接到没有互联网的网络,它仍将返回true

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

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

答案 2 :(得分:0)

我找到了最简单的方法来检查与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) 
   ...