我正在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不是函数
进一步检查,我发现在jQuery自定义触发器事件中,request.onsuccess返回的任何对象都是不同的。
是否有可能将IndexedDB对象传递给自定义jquery触发器事件?
感谢您的回复。
1条答案
按热度按时间p8h8hvxi1#
您没有正确使用jQuery的事件方法。处理程序接受您发送的任何自定义数据的附加参数。因此,您的处理程序应如下所示:
此外,您确实应该使用jQuery的
Event
对象来构造和触发自定义事件。docs声明String事件类型参数将用于DOM级别的事件。但这仍然可以正常工作。Working Solution