Javascript 如何启动我的在线和离线活动

Javascript 如何启动我的在线和离线活动,javascript,html,events,plugins,cordova,Javascript,Html,Events,Plugins,Cordova,我在和科尔多瓦3.4合作。安卓 我设置了4个事件: 魔兽世界 恢复 在线 的 离线 问题是在线和离线事件根本没有触发 根据文档,我将onResume的侦听器设置在deviceready之前,然后设置为online/offline 这就是我所做的 活动的脚本: function onLoad() { document.addEventListener("online", onGoesOnLine, false); document.addEventListener("offline", onGoe

我在和科尔多瓦3.4合作。安卓

我设置了4个事件:

魔兽世界 恢复 在线 的 离线 问题是在线和离线事件根本没有触发

根据文档,我将onResume的侦听器设置在deviceready之前,然后设置为online/offline

这就是我所做的

活动的脚本:

function onLoad() {
document.addEventListener("online", onGoesOnLine, false);
document.addEventListener("offline", onGoesOffLine, false);
document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady() {
document.addEventListener("resume", onResumeApp, false);
var db = window.openDatabase("Database", "1.0", "MondialRelay", 200000);
db.transaction(creerBaseDonneesSiNonExist, function(err){
console.log("erf ...");
 }, function(){
  console.log("hell yeah");
 });
}

function onGoesOnLine(){
 alert("onLine");
}

function onGoesOffLine(){
 alert("offLine");
}

function onResumeApp(){
 alert("onResume");
 window.location = "offLineIndex.html";
}
config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="fr.mondialrelay.appli" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<preference name="loglevel" value="DEBUG" />
<feature name="App">
    <param name="android-package" value="org.apache.cordova.App" />
</feature>
<name>MondialRelay</name>
<description>
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
</author>
<content src="index.html" />
<access origin="*" />
<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>
<feature name="Device">
    <param name="android-package" value="org.apache.cordova.device.Device" />
</feature>
<feature name="Geolocation">
    <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
<feature name="Battery">
    <param name="android-package" value="org.apache.cordova.batterystatus.BatteryListener" />
</feature>
<plugin name="Storage" value="org.apache.cordova.Storage" />
<plugin name="Geolocation" value="org.apache.cordova.GeoBroker" />
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />
</widget>
我不认为我遗漏了什么,但它仍然不起作用

我知道这个问题已经被问过很多次了,但即使在阅读了答案之后,我也不知道如何让它起作用

首先,当我测试时,我把应用程序设为暂停状态以切断我的互联网连接,我认为这可能是问题所在。。然后,我用手机设置了wifi,然后,在应用程序运行时,我将其关闭。。没有办法得到任何警报

谢谢你的帮助; 问候。

没有任何效果。。。 我确实找到了解决那个问题的办法

将您的WWW文件夹保存到某个位置。 转到项目的根目录。 如果尚未完成,请添加所有需要的插件 在项目根目录下的Cordova CLI中构建Cordova 然后复制/粘贴之前保存的www文件夹的内容,而不是由cordova CLI创建的新文件夹。不要替换cordova.js cordova_plugin.js和plugins文件夹

然后转到eclipse IDE,编译,它应该可以工作:

希望这有帮助。
注意。

在线/离线事件仅在状态更改时触发。如果需要在某个点检查连接,可以使用navigator.network.connection.type

initialize: function() {
    this.bindEvents();
},

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},

function onGoesOnLine(){
    alert("onLine");
},

function onGoesOffLine(){
  alert("offLine");
},

onDeviceReady: function() {        
    document.addEventListener("offline", onGoesOffLine, false);
    document.addEventListener("online", onGoesOnLine, false);
    if((navigator.network.connection.type).toUpperCase() == "NONE" && 
       (navigator.network.connection.type).toUpperCase() == "UNKNOWN") {
        onGoesOffLine();
    }
    else {
        onGoesOnLine();
    }   
}

我假设您的onLoad函数是从body onLoad调用的,但实际上您应该让deviceready侦听器独立运行,而不是在函数中,并将联机和脱机事件侦听器连接到onDeviceReady函数中。DeviceRady事件将是触发的第一个事件。此外,请确保通读完整的。是的,从body unload调用onLoad。因此,您的建议是删除onload函数,只将行放在任何函数之外,对吗?是的,将ondevicerady视为onload,并添加不在该函数内部的侦听器。
[ 'org.apache.cordova.battery-status',
'org.apache.cordova.device',
'org.apache.cordova.geolocation',
'org.apache.cordova.network-information' ]
initialize: function() {
    this.bindEvents();
},

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},

function onGoesOnLine(){
    alert("onLine");
},

function onGoesOffLine(){
  alert("offLine");
},

onDeviceReady: function() {        
    document.addEventListener("offline", onGoesOffLine, false);
    document.addEventListener("online", onGoesOnLine, false);
    if((navigator.network.connection.type).toUpperCase() == "NONE" && 
       (navigator.network.connection.type).toUpperCase() == "UNKNOWN") {
        onGoesOffLine();
    }
    else {
        onGoesOnLine();
    }   
}