Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Internet和特定站点是否在JavaScript/AJAX中运行_Javascript_Ajax - Fatal编程技术网

检查Internet和特定站点是否在JavaScript/AJAX中运行

检查Internet和特定站点是否在JavaScript/AJAX中运行,javascript,ajax,Javascript,Ajax,我有一个在我的设备上本地运行的页面,我想使用AJAX或普通JavaScript来检查设备是否连接到互联网,以及某个特定站点是否启动 此外,我正试图找出如何通过AJAX计算RSS提要中的条目数,但我以前从未围绕RSS编程过。不过,这并没有那么重要。出于安全考虑,禁止跨站点Ajax。一些解决办法是使用greasemonkey/userscripts(如果这只是个人使用),或者出于安全考虑,禁止使用flash或java之类的插件跨站点Ajax。一些解决方法是使用greasemonkey/userscr

我有一个在我的设备上本地运行的页面,我想使用AJAX或普通JavaScript来检查设备是否连接到互联网,以及某个特定站点是否启动


此外,我正试图找出如何通过AJAX计算RSS提要中的条目数,但我以前从未围绕RSS编程过。不过,这并没有那么重要。

出于安全考虑,禁止跨站点Ajax。一些解决办法是使用greasemonkey/userscripts(如果这只是个人使用),或者出于安全考虑,禁止使用flash或java之类的插件跨站点Ajax。一些解决方法是使用greasemonkey/userscripts(如果这只是个人使用),或者使用flash或java等插件。与Ajax不同,脚本和图像的加载不受同一来源策略的约束,因此您可以跨域查询它们的存在(但不读取其内容)。如果您知道站点上的特定映像,则可以使用
新映像的
onload
事件处理程序来测试站点是否已启动:

var i = new Image();
i.onload = function() { alert("site is up!") }
i.onerror = function() { alert("site is not up!") }
i.src = "/favicon.ico";
/favicon.ico
存在于大量主要网站上,因为它是旧版IE中favicon功能所必需的。不是每个网站都有它(事实上,不是每个网站都有favicon),但它适用于谷歌、维基百科、堆栈溢出等主要网站


/favicon.ico
非常适合跨站点支持,但如果您只想针对一个特定站点,只需在该站点上查找图像并查询其存在性。

与Ajax不同,脚本和图像的加载不受同一源策略的约束,因此您可以查询其存在性(但不读取其内容)跨域。如果您知道站点上的特定映像,则可以使用
新映像的
onload
事件处理程序来测试站点是否已启动:

var i = new Image();
i.onload = function() { alert("site is up!") }
i.onerror = function() { alert("site is not up!") }
i.src = "/favicon.ico";
/favicon.ico
存在于大量主要网站上,因为它是旧版IE中favicon功能所必需的。不是每个网站都有它(事实上,不是每个网站都有favicon),但它适用于谷歌、维基百科、堆栈溢出等主要网站


/favicon.ico
非常适合跨站点支持,但如果您只想针对一个特定站点,只需在该站点上查找图像并查询其存在性即可。

基本支持

navigator.online
//Events
window.onOnline
window.onOffline

在桌面浏览器上,支持Android。这可能不能完全回答您的问题,但我认为它值得分享:)

有基本的支持

navigator.online
//Events
window.onOnline
window.onOffline

在桌面浏览器上,支持Android。这可能无法完全回答您的问题,但我认为它值得分享:)

或JSONP。您不必使用Flash或Java等限制性解决方案,因为在客户端需要适当的支持。JSONP在这里无效,因为您无法检查正在下载的脚本的状态。当然,如果您能够采取不同的方法,它将是有效的。简单的解决方案是记录JSONP请求启动的时间和调用回调的时间。如果你做得好,你会得到关于每一个请求的信息,包括响应时间或尚未完成的信息。这足以检查连接。您唯一需要的是服务器端的支持。您不必使用Flash或Java等限制性解决方案,因为在客户端需要适当的支持。JSONP在这里无效,因为您无法检查正在下载的脚本的状态。当然,如果您能够采取不同的方法,它将是有效的。简单的解决方案是记录JSONP请求启动的时间和调用回调的时间。如果你做得好,你会得到关于每一个请求的信息,包括响应时间或尚未完成的信息。这足以检查连接。你唯一需要的就是服务器端的支持。哦,这真是天才!我没想过要这么做。现在,何时调用
i.onerror
(即,它何时返回错误)?
onerror
将在以下情况下触发:1)请求返回错误代码(即,不是2XX或3XX HTTP响应——当站点关闭时,映像不存在,或发生某些服务器端错误)或2)获取的资源未被识别为映像。如果浏览器不理解
.ico
,但所有主要浏览器都支持
.ico
,则可能会出现第二种情况。是否有任何方法可以执行类似操作,但目标较小?我必须在那里使用的favicon是3.44kB,如果我每10秒检查一次,那就是30MB/天。如果你只想测试一个特定的站点,也许你可以在该站点上找到一个更小的图像?我之所以推荐favicon,是因为它在很多不同的网站上都是一致的。任何图像都可以,所以请查看该网站,看看是否有任何较小的图像可供使用。此外,很可能您实际上不会使用那么多数据。由于HTTP缓存,在第一次请求之后对映像的所有请求都可能返回HTTP代码,而不是实际的映像数据。这需要1)客户端浏览器缓存映像,2)服务器配置为在适当时发送304个响应。这两种情况都很有可能——只有#1在移动设备上可能有问题。我建议在Wireshark中测试它,看看到底是什么通过电线发送的。哦,这真是天才!我没想过要这么做。现在,何时调用
i.onerror
(即,它何时返回错误)?
onerror
将在以下情况下触发:1)请求返回错误代码(即,不是2XX或3XX HTTP响应——当站点关闭时,映像不存在,或发生某些服务器端错误)或2)获取的资源未被识别为映像。如果浏览器不理解
.ico