javascript IP地址问题,如果无法加载/没有internet连接怎么办

javascript IP地址问题,如果无法加载/没有internet连接怎么办,javascript,json,Javascript,Json,我有一些代码,如果我在家里;它将在弹出窗口中显示,说明您是否在家。如果您不在家,它将显示一个弹出窗口,说明您不在家。由于脚本位于提供IP地址的服务器上,如果您未连接到internet,我如何才能让它说,因为它将无法加载,因此我将拥有该IP=“这会管用,但我做错了什么? 谢谢 函数getip(json) { ip=json.ip 如果(ip!=“”) { 如果(ip==“123.123.123.123”) { 警惕(“你在家”); } 其他的 { 警惕(“你不在家”); } } 其他的 { 警报

我有一些代码,如果我在家里;它将在弹出窗口中显示,说明您是否在家。如果您不在家,它将显示一个弹出窗口,说明您不在家。由于脚本位于提供IP地址的服务器上,如果您未连接到internet,我如何才能让它说,因为它将无法加载,因此我将拥有该IP=“这会管用,但我做错了什么? 谢谢


函数getip(json)
{
ip=json.ip
如果(ip!=“”)
{
如果(ip==“123.123.123.123”)
{
警惕(“你在家”);
}
其他的
{
警惕(“你不在家”);
}
}
其他的
{
警报(“您未连接到internet”);
}
}

JSONP的工作方式是使用响应调用该方法,您的服务器响应来自
http://jsonip.appspot.com/?callback=getip
看起来像这样:

getip({ "ip": "123.123.123.123", "addres": "123.123.123.123" });
var timer = setTimeout(function() { 
  alert("You are not connected to the internet");
}, 10000); //10 seconds
function getip(json){
  clearTimeout(timer);
  if(json.ip == "123.123.123.123") {
    alert("You are at home");
  } else {
    alert("you are not at home");
  }
}
但是,当您未连接时,脚本只包含错误,并且该方法从未被调用,这就是问题所在。您的
if
检查以及整个
getip()
方法从未被命中。您可以执行一个非常简单的超时,如下所示:

getip({ "ip": "123.123.123.123", "addres": "123.123.123.123" });
var timer = setTimeout(function() { 
  alert("You are not connected to the internet");
}, 10000); //10 seconds
function getip(json){
  clearTimeout(timer);
  if(json.ip == "123.123.123.123") {
    alert("You are at home");
  } else {
    alert("you are not at home");
  }
}

您的问题是,如果JSONP加载失败,整个函数将根本不会被调用

理论上,对于可以使用的
元素,存在
onerror
事件,但根据,它在IE中无法可靠工作

然而,这个问题显示了一个可能也适用于您的解决方法:嵌入一个设置变量的脚本,然后检查该变量。如果您控制正在调用的远程应用程序,这将是一个选项


如果不可能的话,我想你唯一能做的就是让回调函数设置一个标志,比如
json\u load=true
并在几秒钟后使用
setTimeout
检查该标志。如果未设置标志,则脚本无法加载,您需要采取相应措施。

如果JSONP无法加载,您的整个函数将不会被调用,是吗?如果您不想为此编写代码,可以使用jquery JSONP