2012-06-02 78 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

相關問題