Firefox的移植Chrome扩展程序无法正常工作(indexedDB错误)

时间:2012-06-02 18:45:39

标签: firefox google-chrome-extension firefox-addon indexeddb

我正在尝试将Twitter Notifier扩展程序移植到FF 我不太熟悉JavaScript所以我只是用extension factory将它转换为FF。

不幸的是它不起作用;我没有收到任何HTML5桌面通知 我看了一下代码,我认为问题出在twitter.js上,应该在路径'resources \ extension-data \ js'中找到。

http://pastebin.com/C0NqU4Ur

首先我改变了

twitter.messagesDB = window.webkitIndexedDB.open("messagesDB");

twitter.messagesDB = window.mozIndexedDB.open("messagesDB");

但它仍然无效。 错误控制台也不会显示任何错误。

当我将一个console.log命令放到twitter.messagesDB.onsuccess函数时,没有任何内容输出到错误控制台。 当我创建一个onerror函数时也没有输出。 所以我虽然用try和catch子句包围函数但是没有抛出错误。

所以我试着把twitter.messagesDB = twitter.messagesDB.result;超出该功能,并在错误控制台中显示以下错误:

Error: uncaught exception: [Exception... "A mutation operation was attempted on a database that did not allow mutations."  code: "6" nsresult: "0x80660006 (NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR)"  location: "chrome-extension://gjlehiopfilnaggndcmbhphaglkbkekf/js/twitter.js Line: 28"]

这是什么意思? 如何让它在Firefox中运行?

提前致谢!

编辑:我在Windows上使用Firefox 12

1 个答案:

答案 0 :(得分:1)

这是由于支持2011年12月发布的最新IndedexDB协议的IndexedDB的Firefox实现与支持之前版本的Chrome实现之间不兼容。

重大变化是数据库的创建方式,旧版(Chrome)实现使用setVersion事务,而较新版本(FF)使用onupgradeneeded事件和回调。

要查看此更改,请please star this issue