首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用外接程序SDK创建XPI包?

使用外接程序SDK创建XPI包?
EN

Stack Overflow用户
提问于 2014-07-04 12:24:24
回答 1查看 295关注 0票数 0

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

代码语言:javascript
复制
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,它启动火狐,如果我转到特定的网页,这个脚本工作。但是,当我用cfx xpi创建XPI文件,然后单击火狐并打开该文件时,它会安装我的外接程序,但现在,当我转到之前给出的相同的网页时,add就不起作用了。我有这个外部Javascript文件,是存储在文件夹‘数据’。

appendFuncmyscript.js文件中。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-04 13:09:24

不要把contentScriptcontentScriptFile混在一起。另外,您也无法知道首先加载了两个文件中的哪一个。

相反,加载脚本和port

main.js

代码语言:javascript
复制
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

代码语言:javascript
复制
self.port.on("showAd", function(data) {
  console.log("showing ad", data.link, data.image);
});

而且,对于您正在做的事情,PageMod似乎是一个更好的选择。

PS:如果你打算在附加政策网站上主持,也可以咨询addons.mozilla.org。政策,例如,禁止注射广告,即:( a)没有明确标记为这样;( b)用户在此之前没有选择的广告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24574276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档