好的,我已经尝试过寻找答案,但似乎没有什么比较合适......
在执行操作之前,我已经拼凑了一个功能,以查看服务器是否正在运行。它通过检查远程服务器上是否存在特定图像来实现此目的。
所有似乎都按照我的预期工作,直到我拿出要将文件名检查到屏幕的警报(出于调试目的)。
删除警报后,即使服务器已启动,它也始终将服务器报告为已关闭。
放回警报似乎可以解决问题,并且警报不必相关(正如您将从代码中看到的那样)。
var isPinging = false;
var serverUp;
function Pinger_ping(ip, callback) {
if(!isPinging) {
isPinging = true;
this.callback = callback
this.ip = ip;
var _that = this;
this.img = new Image();
this.img.onload = function() {
isPinging=false;
serverUp=true;
};
this.img.onerror = function() {
isPinging=false;
};
serverUp = false;
this.img.src = "http://" + ip + "/images/checkimg.jpg?random-no-cache=" + Math.floor((1 + Math.random()) * 0x10000).toString(16);
//unrem the line below and the code works as predicted.
//alert("wtf");
this.timer = setTimeout(function() {
isPinging=false;
}, 4500);
}
}
function pingServer(ipaddress = '127.0.0.1') {
var exitCode = false;
if(!isPinging)
Pinger_ping(ipaddress);
if(serverUp) {
alert("Up");
exitCode = true;
}
else
alert("Down");
return exitCode;
}

<!-- Just called by a simple onclick for testing. -->
<input type="button" value="ping" onclick="pingServer();">
&#13;
任何想法都会受到高度赞赏,即使事实证明这只是我的搞砸了! :)