我的代码中有一些奇怪的问题。我已经创建了简单的DB_Function.js
来管理html页面中的JS函数。
我在<body onLoad="CALL_DB()">
内部调用函数,所以首先会初始化数据库并在需要时创建表。
问题在这里,
代码如下:
DB_Function.js
function CALL_DB() {
try {
alert("call_db");
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
} catch (err) {
alert("Error processing SQL: " + err);
}
}
function populateDB(tx) {
try {
alert("call_table");
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (3, "C")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (4, "K")');
} catch (err) {
alert("Error processing SQL: " + err);
}
}
function errorCB(tx, err) {
alert("Error processing SQL: " + err);
}
// Transaction success callback
function successCB() {
alert("success!");
}
的test.html
<!DOCTYPE html>
<html>
<head>
<title>Storage Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="js/DB_function.js"></script>
</head>
<body onLoad="CALL_DB()">
<h1>Example</h1>
<p>Database</p>
</body>
</html>
这是我的JS FIDDLE 请帮帮我,我不知道我哪里错了。
感谢您阅读我的查询。
答案 0 :(得分:3)
您使用的是Web SQL数据库,not supported by Firefox。此外,规范是abandoned by the W3C。
请改为IndexedDB(caniuse)。还有至少一个shim使IndexedDB在仅支持Web SQL数据库的浏览器中工作。
代码在Android Browser 4.1.2
上的this updated fiddle中“有效”。
答案 1 :(得分:1)
问题在这里,
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
我已经解决了要加载的实时js文件,因此在启动应用程序时可能无法加载。
所以,我已将其保存在assets/www/js/cordova.js
。
所以最后它看起来像上面,它完美地为我工作。
<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>
答案 2 :(得分:0)
看起来你还没有初始化Cordova / PhoneGap API。您必须先操作deviceReady事件,然后才能操作API
查看以下文档: http://docs.phonegap.com/en/2.9.0/cordova_events_events.md.html#deviceready