2

我的代码中有一些奇怪的问题。我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!");
}

测试.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 请帮助我,我不知道我错在哪里。

感谢您阅读我的查询。

4

3 回答 3

3

您正在使用Firefox 不支持的Web SQL 数据库。此外,该规范已被 W3C 放弃

请查看IndexedDB ( caniuse )。还有至少一个shim可以让 IndexedDB 在只支持 Web SQL 数据库的浏览器中工作。

这个更新的小提琴中的代码“有效” Android Browser 4.1.2

于 2013-09-04T04:54:30.540 回答
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>
于 2013-09-11T03:48:55.343 回答
0

看起来你还没有初始化 Cordova / PhoneGap API。在操作 API 之前,您必须先监听 deviceReady 事件

查看以下文档: http ://docs.phonegap.com/en/2.9.0/cordova_events_events.md.html#deviceready

于 2013-09-10T14:21:13.443 回答