gpt4 book ai didi

javascript - 来自 Firefox 附加组件的内容脚本不会写入 IndexedDB

转载 作者:数据小太阳 更新时间:2023-10-29 05:35:26 24 4
gpt4 key购买 nike

我正在开发 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 参数中的 start"、"ready"和 "end"。

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

content-script.js 中的所有内容都在这个事件监听器中。

最佳答案

Dexie 默认使用来自 window 或 self 的 indexedDB。在 firefox 中,附加组件没有在窗口中运行,所以 Dexie 可能找不到它。在Dexie v1.3.6中,可以在构造函数中提供indexedDB API。

尝试最新的 Dexie v1.3.6 并执行:

var idb = require('sdk/indexed-db');
var db = new Dexie("myDatabase", {
indexedDB: idb.indexedDB,
IDBKeyRange: idb.IDBKeyRange
});

关于javascript - 来自 Firefox 附加组件的内容脚本不会写入 IndexedDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com