我有一個兩頁cordova應用程序,第一個有一個搜索字段,第二個顯示第一個結果。 的displayResults
功能科爾多瓦SQLite插件只適用於第一個電話
function displayResults(){
var query = localStorage.getItem('search');
var db = window.sqlitePlugin.openDatabase({name:"Store-DB", location: 1});
queryDB(db,query);
}
function queryDB(db,query){
db.transaction(function(tx) {
var queryList = query.split(" ");
var sqlText = "SELECT * FROM DB WHERE item LIKE '%"+queryList[0]+"%'";
for (i = 1; i < queryList.length; i++) {
sqlText += " OR item LIKE '%"+queryList[i]+"%'";
}
tx.executeSql(sqlText, [], querySuccess);
}
);
}
function querySuccess(tx,results) {
var i;
var len = results.rows.length;
//Iterate through the results
for (i = 0; i < len; i++) {
console.log(row);
//Get the current row
var row = results.rows.item(i);
var div = document.createElement("div");
div.style.background = "gray";
div.style.color = "white";
div.innerHTML = row;
document.body.appendChild(div);
}
alert("Finished");
}
這裏是第二個頁面的代碼:
<link rel="stylesheet" type="text/css" href="css/default.css">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="js/zepto.js" type="text/javascript"></script>
<script src="plugins/com.brodysoft.sqlitePlugin/www/SQLitePlugin.js" type="text/javascript"></script>
<script src="js/code.js" type="text/javascript"></script>
<script type="text/javascript">
function onLoad(){
document.addEventListener("deviceready", onDeviceReady(), false);
}
function onDeviceReady(){
displayResults();
}
</script>
</head>
<body onload="onLoad()">
<div id="taskbar">
<a href="index.html">Home</a>
<a id="username" class="toolbar_item" style="float:right;" href="#"></a>
</div>
第一次加載該頁面displayResults
作品就好了,但如果你點擊鏈接返回到主頁並再次加載第二頁,控制檯打印錯誤ReferenceError: no "undefined" has no property "openDatabase"
換句話說,SQLite插件沒有加載。但是,如果我讓displayResults
火按鈕按下而不是onload
它每次都有效。這種特殊行爲的解釋是什麼?
一個原因可能是onload事件是這個插件完全加載之前過早地打響了答案。我只是在離子框架中讀到這樣的錯誤,但這也可能是一個原因。 – Blauharley 2015-03-13 18:22:04
@Blauharley是的,這幾乎肯定是問題,我知道,但我該如何解決它? I.E.在插件加載之前,我怎麼才能啓動事件? – 2015-03-13 18:38:09
我看到您的cordova.js腳本位於brodysoft插件腳本之上,值得嘗試切換其位置。建議將cordova.js放在頁面文件的底部 – Blauharley 2015-03-13 18:49:18