2011-06-04 99 views
0

在我的页面中,我必须从第三方网站读取天气信息,然后在用户连接到互联网时在div中显示天气。如果不是,我会显示一些本地内容。所以我必须检查用户是否有连接。如何检查用户是否与互联网连接

有人说如果用户可以看到我的页面,他们必须有连接。然而,它并非一直如此,因为我们的应用程序可能在本地网络中运行,所以它们可以获取我们网站中的资源,但不能获得互联网中的资源。

我吼声使用这种方法:添加以下代码在页面的头:

<head> 
    <script src="http://www.google.com/xxx/jquery.min.xx.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     window.onload=function(){ 
     if($){ 
      //the jquery is loaded,the client muse have the connection to the internet. 
     } else 
      //show local content 
     } 

    </script> 
</head> 

然而,在我们的页面,我们使用了原型,如果jQuery是加载成功,它可能会导致冲突。

有什么想法?

注: 我们不需要jQuery的在我们的页面,在这里我加载了jQuery只是为了测试连接,如果可能的话,我可以加载任何其它的库。

现在,我找到了一个想法:

如果谷歌举办的js文件internet.js,只有一行:

var xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx="xx"; 

然后我requset这个文件,以测试 “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” variale被定义为。 :))

+0

您可以使用http://api.jquery.com/jQuery.noConflict/来避免冲突。 – Niklas 2011-06-04 14:27:01

+0

您可以从Google的网站加载原型以及jQuery:http://code.google.com/apis/libraries/devguide.html#prototype。 – Gijs 2011-06-04 14:28:25

+0

但是,如果用户没有互联网连接,用户将如何打开并加载您的网页,甚至在CDN上也可以使用该jQuery脚本? :)我认为你需要重新构建一个问题“如何检查外部域/服务是否可达?”或者其他的东西。 – BalusC 2011-06-04 14:31:40

回答

1

对于您的用例,最好的方法是检查您正在加载的天气内容的错误/返回代码。如果它以某种方式错误或无法加载,请显示您的本地内容。

如果你还是想坚持通过加载JS库检查连接,你可以做一些类似以下内容:

<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script> 
<script> 
    if (typeof window.$ !== 'function') { 
     window.noInternet = true; 
     document.write('<script src="http://mylocalserver/prototype.js"></scri' + 'pt>'); 
    } 
</script> 

可能与你的期望的prototype.js

的版本替换1.7.0.0
1

我知道每个JS库(Mootools/JQuery),当他们做AJAX时,他们也管理不同的返回码。其中一个代码是“服务器无法访问”(找到相关的数字代码)。您可以检查返回代码并对其执行操作。了解您使用的特定API,了解如何获取这些代码。

既然你说有些时候用户不会有外部连接,我会尝试从查询的站点中包含(JSONP)脚本,这又会加载实际内容,而此脚本不处于活动状态,显示本地内容。我会做这个使用定时循环的整个过程(setInterval

+0

但是,除非使用代理方式,否则不允许对跨域执行ajax。 – hguser 2011-06-04 14:32:31

+0

@hguser:你刚刚已经给出了自己的答案(注意:如果服务器明确允许它通过正确的头文件和/或JSONP,则允许跨域请求)。 – BalusC 2011-06-04 14:34:17

+0

@BalusC:在我的文章中,我曾说过,我们的应用程序可能在没有internate连接的本地网络中运行。 – hguser 2011-06-04 14:36:15

1

如何检查jquery是否加载? 这可能帮助.. http://jquery-howto.blogspot.com/2009/03/check-if-jqueryjs-is-loaded.html

注:这里我们检查的jQuery 功能被定义或没有。这是 一种安全的方式来检查正在加载的jQuery库 。如果您不是 使用任何其他JavaScript库 like prototype.js或mootools.js,然后 您还可以检查$而不是 jQuery。

是否当您更改从if ($)您的支票if (jquery)帮助?