IndexedDB - iPad Safari(版本:10&以上)jquery.bind无效

时间:2017-09-08 09:26:50

标签: jquery ios ipad bind indexeddb

说明

我有一个从indexedDB获取记录的函数。当通过使用'jquery.click'将函数调用绑定到元素来调用它时,它工作正常,但当我使用'jquery.bind'绑定相同的元素时,它会崩溃webapp。在调试时我发现应用程序在request.onsuccess事件中崩溃。

平台: Ipad(iOs版本10及以上版本),Safari浏览器

问题:'jquery.bind'无效。

我尝试的方案:

  1. 我尝试通过绑定元素而不调用indexedDB相关函数 - 工作正常
  2. 我在Windows标签中试过 - 工作正常
  3. 使用jquery.click - 工作正常
  4. 使用jquery.bind绑定元素时 - 崩溃了webapp
  5. 示例:

    $('#ABC').bind('click', function(e) {
     var transaction = db.transaction(['Table1'],'readonly')
     var objStore = transaction.objectStore('Table1');
     var request = objStore.getAll()
     request.onsuccess = function (event) {
           console.log(event);
     })
    

    })

    在上面的场景中,应用程序在事件被触发时崩溃,但是如果我们使用jquery.click,那么它可以正常工作。

    请帮忙。

2 个答案:

答案 0 :(得分:0)

看起来您正在使用全局数据库变量并尝试在应用程序的生命周期内重用相同的数据库连接。无法保证在单击事件时,数据库已定义并打开。它可能尚未打开,它可能已关闭,甚至可能不被定义为变量。首先尝试一下。

其他说明:

  • 对于单个表上的交易,您不需要[]
  • 记录您的请求或交易的错误消息,以便您获得更多有用的信息
  • 由您决定,但readonly是隐式的,因为它是默认值,无需指定它
  • 你真的需要更具体地说明崩溃意味着什么。目前你提出问题的方式很难提供帮助。

答案 1 :(得分:0)

在Safari 10.1之前不支持IDBObjectStore上的

getAll()(请参阅http://caniuse.com/#feat=indexeddb2) - 我不认为它已经发布了iOS更新。 (至少,我的iPhone在用户代理中报告10.0。)在其他情况下,您确定这是在平台上工作,还是错误只是没有报告?

正如乔什所指出的那样,很难确切地说出你所看到的问题 - 如果是"崩溃"你得到了一个异常,你能告诉我们异常消息是什么吗?