データベースをアップグレードしようとすると、IDBVersionChangeEvent
イベントがスローされても (コールバックに送信されonupgrade
ます)、onversionchange
呼び出されません! blocked
これは私がイベントを開催することにつながります。正しいハンドラーを呼び出す方法がわかりません。
Chrome 27 の使用
//Account for different names of indexedDB
window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
//Account for different names of transaction and key range
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
var req = indexedDB.open( "test6", 2 );
req.onupgradeneeded = function(event)
{
console.log( "This upgrade gets called" );
//These do nothing
event.target.onversionchange = function(event) { console.log( "request version change" ); };
event.target.result.onversionchange = function(event) { console.log( "database version change" ); };
};
req.onsuccess = function(event)
{
console.log( "This Success is called" );
//These do nothing
event.target.onversionchange = function(event) { console.log( "request version change" ); };
event.target.result.onversionchange = function(event) { console.log( "database version change" ); };
};
req.onerror = function(event)
{
console.log( "This error is not called" );
};
req.onblocked = function(event)
{
console.log( "This blocked is sometimes called" );
};
//This also does nothing
req.onversionchange = function(event) { console.log( "request version change" ); };
どこにでも追加しようとしましたが、呼び出されません!
編集 (未解決) onversionchangeindexedDB.deleteDatabase()
ハンドラを呼び出しているようです! 理由はわかりませんが、アップグレードはしません。