我正在開發Firefox附加組件,它有一些將數據保存到IndexedDB的內容腳本。相同的代碼在Chrome擴展中可以很好地工作,但不適用於Firefox擴展。在Firefox上一切正常,直到數據必須寫入數據庫的部分。來自Firefox附加組件的內容腳本無法寫入到IndexedDB中
index.js
var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
var { indexedDB } = require('sdk/indexed-db');
var request = indexedDB.open("myDatabase");
request.onerror = function(event) {
console.log("Failure.");
};
request.onsuccess = function(event) {
console.log("Success.");
};
pageMod.PageMod({
include: "*",
contentScriptWhen: "start",
//contentScriptFile: ["./js/jquery.min.js", "./js/jquery-ui.min.js", "./js/Dexie.min.js", "./js/content-script.js"]
contentScriptFile: [data.url("js/jquery.min.js"), data.url("js/content-script.js"), data.url("js/jquery-ui.min.js"), data.url("js/Dexie.min.js")],
contentStyleFile: [data.url("css/jquery-ui.min.css")]
});
內容的script.js // 部分地方無法在Firefox
function transition(location, time, date) {
var db = new Dexie("myDatabase");
db.version(1).stores({
likes: 'url, date, time'
});
db.open();
db.likes.add({url: location, date: date, time: time}).then (function(){
alert("Informations are added.");
}).catch(function(error) {
alert("There's an error: " + error);
});
}
工作,我在存儲檢查檢查也沒有任何東西被添加到數據庫中。還有一個細節:我認爲這個問題可能是由腳本加載導致的,因爲我在content-script.js的開始時定義了在DOM準備好時加載所有內容(也許,但我不確定是否是由於此原因造成的,我試過「開始「,」準備就緒「和」結束「contentScriptWhen參數)。
document.addEventListener("DOMContentLoaded", function(event) {
在內容的script.js一切都是這個事件監聽器裏。
你得到的開發工具控制檯任何錯誤?您是使用JPM擴展還是Firefox中的WebExtensions? –
@JaromandaX不好,這也很奇怪,我沒有在控制檯中得到任何與此相關的錯誤。我正在使用JPM。 – Nikola