【发布时间】:2021-05-11 13:05:05
【问题描述】:
我正在开发 JS 中的 IndexedDB 功能 - 我想在成功回调时添加一些带有 IndexedDB 对象的自定义 jquery 触发事件,不确定是否可行,但是当我测试事件触发但它没有传递 IndexedDB 对象
if ( !window.indexedDB ) {
console.log( `Your browser not support IndexedDB` ) ;
return ;
}
const request = indexedDB.open( 'pdr' , 1 ) ;
request.onupgradeneeded = ( event ) => {
let db = event.target.result ;
let store = db.createObjectStore( 'CanvasObjects' , {
autoIncrement : true
} ) ;
} ;
request.onerror = ( event ) => {
console.error( `Database error: ${event.target.errorCode}` ) ;
} ;
request.onsuccess = ( event ) => {
const db = event.target.result ;
console.log(db);
jQuery( document ).trigger( 'test_db_connected' , db ) ;
} ;
之后我使用以下代码对test_db_connected jquery 事件执行函数
jQuery( document ).on( 'test_db_connected' , function ( db ) {
console.log( 'testing_db' ) ;
console.log( db ) ;
const txn = db.transaction( 'CanvasObjects' , 'readwrite' ) ;
} ) ;
但是上面的代码会产生错误
未捕获的类型错误:db.transaction 不是函数
进一步检查,我发现在 request.onsuccess 上返回的任何对象在 jQuery 自定义触发事件中都不相同。
是否有可能将 IndexedDB 对象传递给自定义 jquery 触发事件?
感谢您的回复。
【问题讨论】:
标签: javascript jquery indexeddb