2

HTML5のIndexedDBをいじっています。

以下は、 ChromeまたはFirefoxでは機能しないhttp://html5-demos.appspot.com/static/html5storage/index.html#slide31の簡単なコードで、Firebugで次のメッセージが表示されます。

Uncaught TypeError:undefined`のメソッド'open'を呼び出すことができません

コードの最初の行は次のとおりです。

var db = window.indexedDB.open('FriendDB', 'My Friends!');  // exception here

誰かが私がこれを機能させるのを手伝ってくれますか?

コードを実行しているJSFiddleがあります


このインタラクティブなスライドが機能するため、これがブラウザで機能することを私は知っています:http: //html5-demos.appspot.com/static/html5storage/index.html#slide34

4

3 に答える 3

6

ブラウザごとにプレフィックス付きのバージョンを使用する必要があります(window.webkitIndexedDBまたはwindow.mozIndexedDB)。次に、次のようなことを行うことができます。

window.indexedDB = window.indexedDB
                     || window.webkitIndexedDB
                     || window.mozIndexedDB;

次にwindow.indexedDB、コード内のあらゆる場所で使用します。

于 2011-12-02T04:22:08.240 に答える
3

Chromeのベンダープレフィックス付き拡張機能に関しては、完全なIndexedDB APIを使用したい場合は、それだけではありませんwindow.indexedDB。私はMITライセンスのIndexedDBラッパーに取り組んでいます。fixBrowser()これは、役立つ可能性がある場合に備えて、そのメソッドの簡略化されたバージョンです。ChromeとFF全体のインターフェースを標準化する必要があります。

InDB.fixBrowser = function () {
    if ( 'webkitIndexedDB' in window ) {
        window.IDBCursor = window.webkitIDBCursor;
        window.IDBDatabase = window.webkitIDBDatabase;
        window.IDBDatabaseError = window.webkitIDBDatabaseError;
        window.IDBDatabaseException = window.webkitIDBDatabaseException;
        window.IDBErrorEvent = window.webkitIDBErrorEvent;
        window.IDBEvent = window.webkitIDBEvent;
        window.IDBFactory = window.webkitIDBFactory;
        window.IDBIndex = window.webkitIDBIndex;
        window.IDBKeyRange = window.webkitIDBKeyRange;
        window.IDBObjectStore = window.webkitIDBObjectStore;
        window.IDBRequest = window.webkitIDBRequest;
        window.IDBSuccessEvent = window.webkitIDBSuccessEvent;
        window.IDBTransaction = window.webkitIDBTransaction;
        window.indexedDB = window.webkitIndexedDB;
    } else if ( 'mozIndexedDB' in window ) {
        window.indexedDB = window.mozIndexedDB;
    }
}
于 2011-12-02T05:15:36.967 に答える
1

少し短いバージョン( modernizrの名前に基づく):

var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.moz_indexedDB;
于 2011-12-02T15:34:38.900 に答える