Firefox附加组件的内容脚本不会写入IndexedDB

时间:2016-02-20 14:11:06

标签: javascript firefox firefox-addon indexeddb dexie

我正在开发Firefox附加组件,它有一些内容脚本可以将数据保存到IndexedDB。相同的代码在Chrome扩展程序中完美运行,但在Firefox扩展程序中则不行。在Firefox上,一切正常,直到必须将数据写入数据库的部分。

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")]
});

content-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);
    });

}

我也检查了 Storage Inspector ,没有任何内容添加到数据库中。还有一个细节:我认为这个问题可能是由脚本加载引起的,因为我在content-script.js的开头定义了在DOM准备就绪时加载所有东西(也许,但我不确定它是否是由它引起的,我试过了“在 contentScriptWhen 参数中启动“,”就绪“和”结束“。

document.addEventListener("DOMContentLoaded", function(event) {

content-script.js 中的所有内容都在此事件侦听器中。

0 个答案:

没有答案