以下是我的代码:
使用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。
总之:
想修复该功能,因为它不起作用
想在未连接时显示html。
答案 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