gpt4 book ai didi

javascript - 使用附加 SDK 创建 XPI 包?

转载 作者:行者123 更新时间:2023-12-02 17:14:19 25 4
gpt4 key购买 nike

我的任务是为 Firefox 编写一个附加组件,它将向现有页面添加一个 div 元素。我下载了 Add-on SDK 并编写了一个 main.js 文件,如下所示:

var data = require("sdk/self").data;
require("sdk/tabs").on("ready", ExecuteAd);

function ExecuteAd(tab) {
if ( tab.url.indexOf("some url checking") > -1 ) {
var image = "http://www.lavasoft.com/img/product_icons/aaw11/free.png";
var link = "http://www.google.me";

tab.attach({
contentScriptFile: data.url("myscript.js"),
contentScript: "appendFunc('"+image+"', '"+link+"');"
//contentScript: "alert('Works');"
});
}
}

当我执行命令 cfx run 时,它会启动 Firefox,如果我转到特定网页,该脚本就会起作用。但是,当我使用 cfx xpi 创建 XPI 文件,然后单击 Firefox 并打开该文件时,它会安装我的附加组件,但现在当我转到之前提供的相同网页时,附加组件不起作用。我有一个外部 Javascript 文件,它存储在“data”文件夹中。

appendFunc 位于 myscript.js 文件中。

如何使我的扩展在生产环境中而不只是在测试环境中工作?我认为主要问题是它找不到这个 data/myscript.js (它包含在 .xpi 文件中吗?)

最佳答案

不要混合使用contentScriptcontentScriptFile。此外,您无法知道两者中的哪一个首先加载。

而是加载您的脚本,然后 communicate using port .

main.js

var data = require("sdk/self").data;
require("sdk/tabs").on("ready", ExecuteAd);

function ExecuteAd(tab) {
var image = "http://www.lavasoft.com/img/product_icons/aaw11/free.png";
var link = "http://www.google.me";
var worker = tab.attach({
contentScriptFile: data.url("myscript.js")
});
worker.port.emit("showAd", {image: image, link: link});
}

myscript.js

self.port.on("showAd", function(data) {
console.log("showing ad", data.link, data.image);
});

另外,听起来像 PageMod对于您正在做的事情来说将是更好的选择。

PS:另请参阅Add-on Policies如果您计划在 addons.mozilla.org 网站上托管。政策例如禁止注入(inject)以下广告:a) 未明确标记;b) 用户在此之前未选择加入。

关于javascript - 使用附加 SDK 创建 XPI 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574276/

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