在我的页面中,我必须从第三方网站阅读天气信息,然后在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只是为了测试连接,如果可能的话,我可以加载任何其他的lib。
现在,我找到了一个想法:
如果谷歌主持一个js文件internet.js,只需一行:
var xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx="xx";
然后我重新设置此文件,以测试是否定义了“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”变量。 :)))
答案 0 :(得分:1)
我知道的每个JS库(Mootools / JQuery)在执行AJAX时,它们还管理不同的返回代码。其中一个代码是“服务器无法访问”(找到相关的数字代码)。您可以检查返回代码并对其进行操作。了解您用于查看如何获取这些代码的特定API。
由于你说有时候用户没有外部连接,我会尝试在查询的网站中加入(JSONP)一个脚本,然后加载实际的内容,而这个脚本不活动,显示本地内容。我会使用定时循环(setInterval
)
答案 1 :(得分:1)
检查是否加载了jquery怎么样? 这可能会有所帮助.. http://jquery-howto.blogspot.com/2009/03/check-if-jqueryjs-is-loaded.html
当您将支票从注意:这里我们正在检查jQuery 功能是否定义。这是 检查jQuery库的安全方法 被装载。如果你不是 使用任何其他JavaScript库 比如prototype.js或mootools.js 你也可以检查$而不是 jQuery的。
if ($)
更改为if (jquery)
时,会有帮助吗?
答案 2 :(得分: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