Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javascript进行SQLite调用时Firefox出错_Javascript_Firefox_Sqlite - Fatal编程技术网

通过Javascript进行SQLite调用时Firefox出错

通过Javascript进行SQLite调用时Firefox出错,javascript,firefox,sqlite,Javascript,Firefox,Sqlite,我有一个完全在Chrome/Safari中运行的站点,它严重依赖SQLite来存储/访问数据。但是,在Firefox中进行测试时,它在第一次调用openDatabase()时出错。这是我相当标准的openDB函数: function openDB(){ try { if (!window.openDatabase) { alert('not supported'); } else { var shortName = 'tales';

我有一个完全在Chrome/Safari中运行的站点,它严重依赖SQLite来存储/访问数据。但是,在Firefox中进行测试时,它在第一次调用openDatabase()时出错。这是我相当标准的openDB函数:

function openDB(){
try {
    if (!window.openDatabase) {
        alert('not supported');
    } else {
        var shortName = 'tales';
        var version = '1.0';
        var displayName = 'Tall Tales Database';
        var maxSize = 65536; // in bytes
        db = openDatabase(shortName, version, displayName, maxSize); 
        // You should have a database instance in db.
    }
} catch(e) {
    // Error handling code goes here.
    if (e == 2) {
        // Version number mismatch.
        alert("Invalid database version.");
    } else {
        alert("Unknown error "+e+".");
    }
    return;
}
}

正如我所说的,当我提醒openDatabase时,它是未定义的,并且打印的未知错误是“不受支持的”。我假设Firefox实际上支持SQLite,是我做错了什么,还是它需要特定于浏览器的代码

谢谢大家!!
克劳迪娅

火狐没有这个功能。Mozilla认为SQLite不适合web,因此在Firefox4中,他们将选择并实施W3C的IndexedDB规范草案(包括Mozilla的提案)。下面是一篇很好的博客文章,详细介绍了这些区别:

因此,是的,为了支持FF4,您必须使用特定于客户端的代码——至少在其他主要浏览器中实现IndexedDB之前是这样。对于FF4之前的版本,不支持任何客户端数据库(不包括本地存储等)。

应该是:

if (typeof(window.openDatabase)=='undefined') {
  alert(...)

这应该行得通。

不过这不是“他们自己的数据库API”。它也是一个W3C标准,Mozilla、Chromium和Microsoft正在积极开发和实施IndexedDB。@sdwilsh:我的意思是Mozilla对异步API做出了巨大贡献。从某种意义上说,这是他们自己的API,他们想出并设计了它。无论如何,我编辑我的文章是为了让它更清楚地表明它不是一个“封闭”的解决方案——也就是说,他们正在积极地尝试将规范修改到它的最终状态,以供所有人使用。谢谢你指出这一点。
function openDB(){
try {
    if (!!window.openDatabase) {
        var shortName = 'tales';
        var version = '1.0';
        var displayName = 'Tall Tales Database';
        var maxSize = 65536; // in bytes
        db = openDatabase(shortName, version, displayName, maxSize); 
        // You should have a database instance in db.
    } else {
        alert('not supported');
    }
} catch(e) {
    // Error handling code goes here.
    if (e == 2) {
        // Version number mismatch.
        alert("Invalid database version.");
    } else {
        alert("Unknown error "+e+".");
    }
    return;
}