1

请帮忙。我有以下无限运行的功能:

    // Check the connection state of the device
    function checkConnection() {

        var networkState = "";
        networkState = navigator.connection.type;

        var states = {};
        states[Connection.UNKNOWN]  = 'Unknown connection';
        states[Connection.ETHERNET] = 'Ethernet connection';
        states[Connection.WIFI]     = 'WiFi connection';
        states[Connection.CELL_2G]  = 'Cell 2G connection';
        states[Connection.CELL_3G]  = 'Cell 3G connection';
        states[Connection.CELL_4G]  = 'Cell 4G connection';
        states[Connection.CELL]     = 'Cell generic connection';
        states[Connection.NONE]     = 'No network connection';

        if (states[networkState] === 'No network connection') {
            noNetworkAlertCreate();
        } else {
            noNetworkAlertRemove();
        }

        checkConnection();
    }

一旦设备准备就绪,就会调用此函数:

    // Device is ready let's do this
    function onDeviceReady() {
        checkConnection();
    }

该函数已正确循环,但连接状态并未随每个循环更新。如果第一次注册为 WIFI 状态,再次运行时不会更新,即使 WIFI 已禁用,也会再次注册为 WIFI。

有什么建议吗?

非常感激

4

1 回答 1

1

ondeviceready 只会在 cordova 满载时触发一次。当发生不同的事件(例如“在线”和“离线”)时,您将需要调用相同的函数。:

// Device is ready let's do this
function onDeviceReady() {
    checkConnection();
}

document.addEventListener("deviceready", onDeviceReady, false);
document.addEventListener("online", checkConnection, false);
document.addEventListener("offline", checkConnection, false);
于 2014-02-04T03:26:11.910 回答