问题
我想在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
还有一些。
有什么建议吗?
答案 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)
...