PhoneGap离线/在线事件不起作用

4
我正在开发一个使用2.7版本的phonegap应用程序,但我在“在线”和“离线”事件上遇到了麻烦。似乎它不像文档中所述的那样工作。
我的代码首先调用deviceready事件。
function init(){
  document.addEventListener('deviceready', arrangeConnectionListener, false);  
}

function arrangeConnectionListener(){
  document.addEventListener('online', onOnline, false);
  document.addEventListener('offline', onOffline, false);
}

$(document).ready(init);

然而,监听器上的功能未被触发。我尝试在调用在线/离线监听器时加入延迟(1500毫秒),但仍然无济于事。我还尝试在arrangeConnectionListener中放置控制台日志以确保deviceready事件正在触发。
有人有解决方法或遇到过这个问题吗?
谢谢!

你尝试过文档中的示例吗?http://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html#online - CBIII
是的,但仍然不起作用。 :( - jason
好的,所以在deviceready事件之前设置在线和离线监听器使其工作。感谢Clyde提供的指南。能否回答一下,这样我就可以点赞你? - jason
2
从cordova/phonegap 3+开始,当你安装网络插件phonegap plugin add org.apache.cordova.network-information时,此功能可以启用。完成后,您可以使用HTML5在线/离线事件+1 Orjit - naikus
可能是[Phonegap事件在线/离线不起作用]的重复问题。(https://dev59.com/8HXYa4cB1Zd3GeqP7IW5) - sandyJoshi
显示剩余3条评论
4个回答

3

我在使用Cordova 3.1版本的IOS6时遇到了类似问题。尽管文件中没有明确说明,但请先安装Connection插件。安装完成后,您可以设置事件处理程序。

    document.addEventListener("deviceready", onDeviceReady, false);
    document.addEventListener("online", onOnline, false);
    document.addEventListener("offline", onOffline, false);

2

是的,@Orijit 是正确的。 这个并没有被很好地记录下来,为了使用在线/离线事件,你需要:

1)添加"Connection" Phonegap插件

$ cordova plugin add org.apache.cordova.network-information

2) 修改 config.xml 和 AndroidManifest.xml:

(in app/res/xml/config.xml)
<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>    

(in app/AndroidManifest.xml)
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3) 使用上述解释的在线/离线事件

4) 创建一个新的构建,例如Android:cordova build android


文档

连接插件:

http://docs.phonegap.com/en/3.3.0/cordova_connection_connection.md.html#Connection

在线/离线事件:

http://docs.phonegap.com/en/3.3.0/cordova_events_events.md.html#online


应该使用 cordova plugin add 命令,而不是 cordova plugin rm - Timo Ernst

1
在线/离线事件与Phonegap的连接API有关。 由于模拟器不支持此API,类似于其他API(如加速度计、指南针等),因此这些在线/离线事件将不会在模拟器上触发。
但是,如果您在安卓手机上运行应用程序,并且其版本大于4.3.0,则应用程序将被执行。 将.apk文件复制到D:/myphonegap/project_name/bin/project_name.apk, 并在您的安卓手机上安装。

1

文档没有在线/离线事件。窗口有。

window.addEventListener

替代

window.document.addEventListener

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接