`

检查mobile是否在线

 
阅读更多

在PhoneGap应用,或者黑莓Java/HTML混搭应用中,如何使用JavaScript检查Mobile App网络连接状态呢?

 

[javascript] view plaincopy
  1. <script type="text/javascript">  
  2.   if (navigator.onLine) {  
  3.       alert("online");  
  4.   } else {  
  5.       alert("offline");  
  6.   }  
  7. </script>  

 

jQuery Mobile中显示online/offline状态

 

[javascript] view plaincopy
  1. <div data-role="content">  
  2.     <button id="home_network_button" data-icon="check">Internet Access Enabled</button>  
  3.   </div>  
[javascript] view plaincopy
  1.   <script type="text/javascript">  
  2.      if (navigator.onLine) {    
  3.       } else {    
  4.         $("#home_network_button").text('No Internet Access')  
  5.          .attr("data-icon""delete")  
  6.          .button('refresh');  
  7.       }    
  8.   </script>  
  9. </div>  


 

 

 开发离线应用的第一步是要知道设备是在线还是离线,HTML5为此定义了一个navigator.onLine属性,这个属性值为true表示设备能上网,值为false表示设备离线。这个属性的关键是浏览器必须知道设备能否访问网络,从而返回正确的只。实际应用中,navagator.online在不同的浏览器间还有写小的差异。

IE6+和Safari 5+能够正确检测到网络已断开,并将navigator.onLine的值转换为false。

Firefox 3+和Opear 10.6+支持navigator.onLine属性,但你必须手工选中菜单项“文件-Web开发人员(设置)-脱机工作”才能让浏览器正常的工作。

Chrome 11及之前版本始终将navigator.onLine属性设置为true。这是一个待修复的bug。

由于存在上述兼容性的问题,单独使用navigator.onLine属性不能确定网络是否连通。即便如此,在请求发生错误的情况下,检测这个属性仍然是瓜农的。以下是检测该属性状态的示例。

if(navigator.onLine){
    //正常工作}
else{
    //执行离线状态时的任务
}

除navigator.onLine属性之外,为了更好地确定网络是否可用,HTML5还定义了两个事件:online和offline。当网络从离线变为在线或者从在线变为离线时,分别触发这两个事件。这两个事件在window对象上触发。

 
var EventUtil = {
    addHandler: function (element, type, handler) {
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    }
};

EventUtil.addHandler(window, "online", function () {
    alert("Online");
});
EventUtil.addHandler(window, "offline", function () {
    alert("Offline");
});

 

为了检测应用是否离线,在页面加载后,最好先通过navigator.onLine取得初始的状态。然后,就是通过上述两个事件来确定网络连接状态是否变化。当上述事件触发式,navigator.onLine属性的值也会改变,不过必须要手工轮询这个属性才能检测到网络状态的变化。

支持离线检测的浏览器有IE6+(只支持navigator.onLine属性)、Firefox3、Safari4、Opera 10.6、Chrome、iOS 3.2版Safari和Android版WebKit。

参考:

navigator.onLine 离线检测 

http://mobile.tutsplus.com/tutorials/phonegap/build-an-exercise-tracking-app-geolocation-tracking/

分享到:
评论

相关推荐

    触摸屏检查,C#,mobile

    此代码主要用于检测运行在Windows Mobile平台上的设备是否具备触摸屏功能。 ### 触摸屏检查 #### 代码解析 ##### 命名空间与导入 首先,代码通过`using`关键字导入了多个命名空间,包括但不限于`System`、`System...

    vSphere Mobile Client v2.0

    - **远程故障排查**: 当服务器出现故障时,可以立即通过手机检查并解决问题。 - **灾难恢复**: 在紧急情况下,能够迅速采取行动,例如启动备份虚拟机。 - **日常监控**: 对于大型数据中心,管理员可以通过移动设备...

    Windows Mobile设备中心(64位)

    同时,定期检查更新以获取最新的功能和安全性改进,是保证Windows Mobile设备中心顺畅运行的关键。 总结来说,Windows Mobile设备中心(64位)是Windows 7 64位用户管理Windows Mobile手机的必备工具,它提供全面的...

    Crestron Mobile 安卓 使用说明

    - **版本更新**:定期检查应用更新,以确保使用最新版本的功能和服务。 - **技术支持**:如果遇到任何问题或疑问,可以通过 Crestron 的官方网站或客服热线获得帮助。 #### 五、结论 通过本指南的学习,您应该已经...

    艾肯Mobile U声卡驱动_v1.37.5

    安装完成后,用户可以通过设备管理器检查声卡是否被正确识别,并通过驱动程序的控制面板调整各种音频参数,如增益、采样率、缓冲区大小等,以适应不同的录音和播放环境。 总的来说,艾肯Mobile U声卡驱动_v1.37.5是...

    Mobile-Detect-2.8.12

    1. **设备检测**:可以通过`isMobile()`方法检查用户是否使用移动设备,`isTablet()`方法则用于判断是否为平板电脑。此外,还可以检测特定设备如`isiPhone()`, `isAndroidPhone()`等。 2. **操作系统检测**:库提供...

    jQueryMobile-HTML5模板

    2. **功能调试**:在不同设备或模拟器上测试模板,检查其在不同屏幕尺寸和浏览器下的表现。 3. **自定义修改**:尝试修改模板的样式、布局或交互,以满足自己的需求。 4. **扩展功能**:结合JavaScript和jQuery,...

    Windows mobile5.0仿真器

    Windows Mobile 5.0 仿真器是一款用于开发者和测试人员的工具,它允许用户在桌面计算机上模拟运行 Windows Mobile 5.0 操作系统的设备。这个仿真器对于开发、调试和测试移动应用至关重要,因为它提供了在真实设备上...

    泛微e-mobile常见问题及解决

    对于e-mobile启动后,登录manager后台管理,显示“服务器通讯异常,请检查相关设置”的情况,排查方法包括:确认初始化设置中设置的目标e-cology系统是否已启动,以及检查e-cology系统webservice状态是否正常。...

    windows mobile控制台插件

    4. **系统调试工具**:对于开发者而言,控制台插件是调试移动应用的重要工具,因为它允许他们查看系统日志、跟踪内存使用情况、检查网络连接等。 5. **第三方工具集成**:许多控制台插件支持安装和使用第三方命令行...

    jQuery Mobile 高级设计模板

    3. **调试和定制:** 使用浏览器的开发者工具检查和调整元素样式,根据需求修改JavaScript代码以实现特定功能。 4. **性能优化:** 注意减少HTTP请求,合并CSS和JS文件,以及利用数据缓存来提高应用性能。 总之,`...

    OperaMobile12.1.zip

    3. **调试工具**:内置的开发者工具提供了一套完整的调试解决方案,包括元素检查、网络请求查看、性能分析等功能。这些工具使得开发者能够定位并修复代码中的问题,优化网页加载速度和性能。 4. **触摸事件模拟**:...

    iphone连接助手源码 C++调用itunes的MobileDevice.dll与电脑建立连接支持新版itunes IOS

    使用前请检查itunes是否已安装64位版本,我使用的是iTunes 64位_12.12.2.2 不需要iTunesMobileDevice.dll 本程序开发环境win10 x64 vs2022 使用多字节字符集编译64位 预处理 _CRT_SECURE_NO_WARNINGS 如果提示...

    ECSHOP mobile 触屏

    在本文中,我们将深入探讨ECSHOP Mobile 触屏的关键特性、安装步骤以及如何有效利用其功能来提升您的在线业务。 首先,ECSHOP Mobile 触屏的核心目标是为智能手机和平板用户提供一个流畅、直观的购物体验。它采用了...

    Mobile模拟器环境配置与程序运行

    - 如果同步连接没有成功,可以手动打开 Windows Mobile 设备中心,并检查连接设置。 - 确保“允许连接到以下一个其中的端口”选项中已经选中了 DMA (Device Manager Agent),然后点击“连接”。 5. **屏幕方向...

    Windows Mobile 6.1 开发指南

    - **步骤四**: 监控下载进度并检查是否有错误发生。 通过以上步骤,您可以成功地为 Windows Mobile 6.1 构建并下载自定义的操作系统镜像。这份开发指南不仅适用于新手,也对有经验的开发者有所帮助,因为它详细地...

    Open mobile api 测试规范

    - `boolean isConnected()`:检查SE服务是否已连接。 - `void shutdown()`:关闭SE服务,释放资源。 - `SEService(Context context, SEService.CallBack listener)`:构造函数,初始化SE服务,需提供上下文和回调...

    Mobile_detect2.7.9

    3. 对特定设备或操作系统进行更精确的判断,例如检查是否为iPad: ```php if ($detect-&gt;isiPad()) { echo '当前访问设备为iPad'; } ``` 或者检测是否为Android设备: ```php if ($detect-&gt;isAndroidOS()) { echo '...

    Windows Mobile

    对于普通用户,理解如何使用同步工具进行数据同步和应用安装,以及定期检查和更新设备驱动,可以保持设备的良好运行状态,并确保与最新的软件和服务兼容。 总之,Windows Mobile在Windows 7下的开发和使用涉及到多...

Global site tag (gtag.js) - Google Analytics