我正在使用以下脚本来检查设备是在线还是离线:
function checkConnection() {
document.addEventListener("online", onDeviceOnline, false);
document.addEventListener("offline",onDeviceOffline, false);
function onDeviceOnline(){
loadZive();
loadMobil();
loadAuto();
};
function onDeviceOffline(){
alert("deviceIsOffline");
};
};
checkConnection();
然后我有这个函数来加载提要:
function loadZive(publishedDateConverted){
google.load("feeds", "1");
function initialize() {
var feed = new google.feeds.Feed("http://www.zive.sk/rss/sc-47/default.aspx");
feed.setNumEntries(window.localStorage.getItem("entriesNumber"));
feed.load(function(result) {
if (!result.error) {
var feedlist = document.getElementById("feedZive");
for (var i = 0; i < result.feed.entries.length; i++) {
var li = document.createElement("li");
var entry = result.feed.entries[i];
var A = document.createElement("A");
var descriptionSettings = window.localStorage.getItem("descriptionSettings");
if (descriptionSettings=="true"){
var h3 = document.createElement("h3");
var p = document.createElement("p");
var pDate = document.createElement("p");
pDate.setAttribute("style","text-align: right; margin-top: 5px;");
var publishedDate = new Date(entry.publishedDate);
publishedDateConverted = convertTime(publishedDate);
pDate.appendChild(document.createTextNode(publishedDateConverted));
h3.setAttribute("style","white-space: normal;")
h3.appendChild(document.createTextNode(entry.title));
p.setAttribute("style","white-space: normal;")
p.appendChild(document.createTextNode(entry.content));
A.setAttribute("href",entry.link);
A.appendChild(h3);
A.appendChild(p);
A.appendChild(pDate);
}
else{
A.setAttribute("href",entry.link);
A.setAttribute("style","white-space: normal;")
A.appendChild(document.createTextNode(entry.title));
};
li.appendChild(A);
feedlist.appendChild(li);
}
$("#feedZive").listview("refresh");
}
});
}
google.setOnLoadCallback(initialize);
};
首先我加载第二个脚本,然后是第一个。但我什么都看不到。如果我打开我的应用程序,然后我会看到页面布局大约 1 秒,然后(可能在加载第一个脚本之后)函数 onDeviceOnline() 发生并且我只能看到空白页。但它应该将提要加载到现有模板中。
恕我直言 onDeviceOnline 功能在加载页面模板后发生,因此它无法导入提要。如果我创建这样的函数:
function loadFeeds(){
loadZive();
loadMobil();
loadAuto();
};
然后一切正常,所以我认为这与在线和离线事件监听器有关。当我将 checkconnection 放入 onDeviceReady 函数时它也不起作用,所以它不应该是问题。那么有什么方法可以检查设备是否在线,如果在线则使用 js 文件加载提要?
编辑:我使用了 Simon McDonald 的建议并创建了如下代码:function onDeviceReady(){
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(){
navigator.app.exitApp();
}
function checkConnection() {
var networkState = navigator.network.connection.type;
if (networkState == "none"){
alert("no network connection");
}
else{
loadZive();
loadMobil();
loadAuto();
};
};
checkConnection();
};
使用此代码警报非常适合在线设备和离线设备,但是当我尝试 loadFeed 时,我得到与以前相同的结果(页面布局加载,然后一切都变为空白页面)。