【问题标题】:IndexedDB object to jQuery custom trigger event?IndexedDB 对象到 jQuery 自定义触发事件?
【发布时间】: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


    【解决方案1】:

    您没有正确使用 jQuery 的事件方法。处理程序接受您发送的任何自定义数据的附加参数。所以你的处理程序应该是这样的:

    jQuery(document).on('test_db_connected', function(ev, db) {
      console.log('testing_db');
      console.log(db);
      const txn = db.transaction('CanvasObjects', 'readwrite');
      console.log(txn);
    });
    

    此外,您确实应该使用 jQuery 的 Event 对象来构造和触发自定义事件。 docs 表明 String 事件类型参数将用于 DOM 级别事件。但这仍然可以正常工作。

    Working Solution

    【讨论】:

    • 非常感谢,是的,效果很好:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2013-02-03
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多