2012-06-02 59 views
0

我试图将Twitter Notifier扩展移植到FF。
我对JavaScript不太熟悉,所以我只是用extension factory将它转换为FF。移植到Firefox的Chrome扩展无法正常工作(indexedDB错误)

不幸的是,它不工作;我没有收到任何HTML5桌面通知。
我已经看了一下代码,我认为问题是应该在路径'resources \ extension-data \ js'中找到twitter.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

+1

扩展工厂为您的扩展创建了一个自定义的'chrome-extension'协议。我想在该协议上使用IndexedDB是不可能的。这是自动转换服务的问题 - 他们试图隐藏平台之间的差异,但只有太多。 –

+0

太糟糕了。我认为必须保留旧版本的扩展。它不使用IndexedDB并正在工作。至少通知。 – TheLostOne

回答

1

这是由于Firefox的实施IndexedDB的,它支持2011年12月公布的最新IndedexDB协议之间的不兼容,以及Chrome实现,它支持的版本使用的是Firefox 12在此之前。

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

要查看此更改,please star this issue

+1

感谢您的信息!我为这个问题出演过。 – TheLostOne

相关问题