我正在“尝试”创建一个 Safari 扩展程序,将链接添加到本地 sqlite 数据库。
在 global.html 文件中,我可以创建数据库,但我无法创建表,除非我引用一个不存在的变量,这使得脚本的其余部分失败。
// Global Variable to hold my database
var my_DB;
// Make A Database
init_DB();
// Make A Table
createTable(my_DB);
// Rest of the code
alert("Database and Table have been created!");
// Initialise the Database
function init_DB() {
try {
// Check for Database Support
if (!window.openDatabase) {
alert("Database functionality is NOT Supported!");
} else {
// Setup the database
var shortName = "imp_DB";
var version = '1.0';
var displayName = "My Important Database";
var maxSize = 65536; // in bytes
var theDB = openDatabase(shortName, version, displayName, maxSize);
}
} catch(e) {
// Error Handling
if (e == "INVALID_STATE_ERR") {
// We have a version number mismatch
alert("Invalid database version");
} else {
// Unknown error
alert("Unknown error: " + e);
}
return;
}
// Assign the database to the global variable
my_DB = theDB;
}
// Create The Table
function createTable(thisDB) {
thisDB.transaction(function(txn) {
txn.executeSql('CREATE TABLE IF NOT EXISTS people (id unique, name, age)');
});
// The following line is the problem
someVar = txn;
}
调用 init_DB() 工作正常,并创建数据库。但是,调用 createTable(my_DB) 只是默默地失败(没有错误或警告),其余代码完成,除非我以某种方式引用“txn”。
所以添加“SomeVar = txn;” 行允许创建表,但不幸的是,它导致“ReferenceError:找不到变量:txn”出现在控制台中,并停止运行其余代码。
有没有人有任何想法?一个多星期以来,我一直试图让它工作,但我已经无能为力了。
在此先感谢您的任何建议 ;-)
注意在尝试创建表之前声明“txn”也会导致静默失败。