如果没有连接,Phonegap会显示html

时间:2014-03-04 15:12:38

标签: ios cordova

以下是我的代码:

使用phonegap 2.9

    <head>

</head>
<body>
    <script charset="utf-8" src="js/cordova.js"></script>
    <script>
        document.addEventListener("deviceready", onDeviceReady, false);
        document.addEventListener("online", onOnline, false);
        document.addEventListener("offline", onOffline, false);

        // PhoneGap is loaded and it is now safe to make calls PhoneGap methods
        //
        function onDeviceReady() {
            console.log("Device Ready");
        }

    // Handle the online event
    //
    function onOnline() {
        document.location = 'http://app.dadad.com';
    }

    function onOffline() {
        console.log("Offline");
    }
    </script>

</body>

然而现在我只是得到一个白色的屏幕,无论我是否连接。最终我想要的是在没有连接用户时显示一些html。

总之:

  1. 想修复该功能,因为它不起作用

  2. 想在未连接时显示html。

2 个答案:

答案 0 :(得分:0)

在线/离线事件不会触发onload。当你在应用程序(完全加载)然后丢失或获得连接时它们就在那里。我通过对负载进行初始连接检查来解决这个问题,如下所示:

function checkConnetcion() {
    var networkState = navigator.connection.type;

    var states = {};
    states[Connection.UNKNOWN]  = false;
    states[Connection.ETHERNET] = true;
    states[Connection.WIFI]     = true;
    states[Connection.CELL_2G]  = true;
    states[Connection.CELL_3G]  = true;
    states[Connection.CELL_4G]  = true;
    states[Connection.CELL]     = true;
    states[Connection.NONE]     = false;
    var connectionStatus = states[networkState];
    if(connectionStatus) {
        //Do something if connected
    }
    else{
        //Do something if not connected
    }
}

然后添加你的onready函数:

    // PhoneGap is loaded and it is now safe to make calls PhoneGap methods
    //
    function onDeviceReady() {
        console.log("Device Ready");
        checkConnetcion();
    }

答案 1 :(得分:0)

您可以使用Jquery ajax并在发送实际请求之前发送虚拟请求。如果你得到并且错误代码为'0'则意味着没有互联网连接。

$.ajax({
 url: 'TestUrl',
 type: 'GET',
 success: function (data) {
            // Go ahead with you request
 },
 error: function (x, y, z) {
    if (x.status == 0) {
        alert("Please connect to the internet");
    }
   else{
       alert("Other Error Occured")
    }
 }
});

其次,您还可以使用HTML 5导航器

var condition = navigator.onLine ? "ONLINE" : "OFFLINE";

WIFI不提供互联网连接时会显示 ONLINE 如果没有互联网连接,Cordova连接对象也会显示WIFI