我有以下 javascript。
function isOnline() {
var status = navigator.onLine ? 'online' : 'offline',
indicator = document.getElementById('indicator'),
current = indicator.textContent;
// only update if it has change
if (current != status) {
// update DOM
indicator.textContent = status;
// trigger handler
handler[status]();
};
if(current == 'offline')
{
setInterval(checkServerStatus, 500)
checkServerStatus();
}
};
function checkServerStatus()
{
var img = document.createElement("img");
img.onload = function()
{
alert('yey!');
setInterval(isOnline, 500);
isOnline();
};
img.onerror = function()
{
alert('meh.')
};
img.src = "image-small.jpg"; //image on server(should be small so that intermittent checks are not bad)
}
$(checkServerStatus);
我想做的是以下。首先调用 checkServerStatus() --> if online 每隔 500ms 运行一次 isOnline() 以不断检查网站的状态。在我的 isOnline 代码中,如果我检查它是否处于脱机状态,然后再次运行 checkServerStatus,如果我仍然连接,请返回。
另外,我想补充两点,当 checkServerStatus 失败时,递归调用另一个函数 isOnline2 进行检查,直到它在线,然后我再次调用 checkServerStatus。
我目前遇到的问题是 checkServerStatus 一直显示“yey”警报。我以为,该函数只启动一次,然后使用 setInterval(isOnline, 500) 将继续运行。在 isOnline 更改为离线后,我将再次运行我的 checkServerStatus 函数。
任何关于如何调整它的想法都将非常感激。