Ошибка в Firefox при выполнении вызовов SQLite через Javascript - PullRequest
2 голосов
/ 02 октября 2010

У меня есть сайт, который полностью функционирует в 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 не определен, когда я предупреждаю об этом, и неизвестная ошибка, которая печатается, «не поддерживается». Я предполагаю, что SQLite на самом деле поддерживается в Firefox, я делаю что-то не так или требуется код для браузера?

Спасибо! Клаудия

Ответы [ 3 ]

3 голосов
/ 02 октября 2010

Firefox не имеет этой функции.Mozilla не считает, что SQLite подходит для Интернета, поэтому в Firefox 4 вместо этого они будут выбирать и реализовывать спецификацию IndexedDB.проект W3C (включая предложения Mozilla).Вот хороший пост в блоге с подробным описанием различий: http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/

Так что да, вам придется использовать специфичный для клиента код для поддержки FF4 - по крайней мере, пока IndexedDB не будет реализован в других основных браузерах.Для чего-либо до FF4 не поддерживается ни одна клиентская база данных (не считая localStorage и т. Д.).

1 голос
/ 15 мая 2011

Должно быть:

if (typeof(window.openDatabase)=='undefined') {
  alert(...)
0 голосов
/ 23 февраля 2013
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;
}

Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...