检查是否连接到网络; jQuery的

Bre*_*dan 17 jquery html5

我已经通过StackOverflow进行了搜索,并看到了有关如何执行此操作的各种主题,但没有任何与我的特定情况有关的内容.我正在编写(用于类)移动"应用程序"(使用HTML5,CSS,jQuery).它最终将成为一个独立的"应用程序",它将包含所有所需文件的本地副本.在我的一个页面上,我有一个提交表单,由于用户在离线时无法提交表单,我希望将该页面重定向到自定义404页面.

我只是在寻找是否有办法在jQuery中实现这一点,因为我还没有找到任何东西.

谢谢

Bot*_*Bot 22

你可以用

if (navigator.onLine) {
    // I'm online so submit the form.
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*rel 22

实际上你根本不需要jQuery.HTML5本身为在线/离线条件下运行的应用程序提供了一个简洁的工具 - 缓存清单.缓存清单是标记manifest属性中引用的纯文本文件<html>:

<html manifest="cache.manifest">
Run Code Online (Sandbox Code Playgroud)

此清单文件的内容告诉浏览器,哪些资源需要在线条件来执行function(NETWORK),哪些文件需要cache(CACHE)以及在offline(FALLBACK)时请求网络资源时要执行的操作.

CACHE MANIFEST
# the above line is required

NETWORK:
*

FALLBACK:
*   error404.html

CACHE:
index.html
about.html
help.html
# Plus all other resources required to make it look nice
style/default.css
images/logo.png
images/backgound.png
Run Code Online (Sandbox Code Playgroud)

使用清单时,浏览器首先查询清单,并且在没有任何脚本的情况下,根据在线或离线进行相应的操作.

http://dev.w3.org/html5/spec-preview/offline.html#manifests

更新:

请注意响应内容类型的关键要求.纯文本根本不起作用.

必须使用text/cache-manifestMIME类型提供清单.

http://dev.w3.org/html5/spec-preview/offline.html#writing-cache-manifests

另请注意,清单中未列出的所有URL都会因此而被阻止加载.这就是为什么我用通配符(*)修复上面的清单以允许"其余".这可能会帮助您开始.


Jas*_*per 17

您可以查看navigator.onLine酒店或收听offline/ onlineevents:

$(document).on('offline online', function (event) {
    alert('You are ' + event.type + '!');
});
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.html5rocks.com/en/mobile/workingoffthegrid/

以下是这些活动的一些MDN文档:https://developer.mozilla.org/en/Online_and_offline_events

我自己并不熟悉这些事件,但如果您阅读上述链接,您应该找到很多好的信息.

  • @ToddMoses我必须测试它以确保它有效,但是Todd Moses的回答似乎是一个很好用的.但是你可以使用一个小资源来加载而不是整个框架.例如,您可以托管自己的JS文件,只需向全局范围添加标志,如果该标志存在则用户在线.要确保JS文件未缓存,您必须正确设置文件的标头以始终刷新. (2认同)