javascript - 附加生成器 : ContentScript and back to Addon code?

标签 javascript jquery firefox-addon firefox-addon-sdk

我正在使用 Firefox Add-on Builder,这是我目前拥有的:

ma​​in.js:

var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;

var widget = widgets.Widget({
  id: "div-show",
  label: "Show divs",
  contentURL: "http://www.mozilla.org/favicon.ico",
  onClick: function() {
    tabs.activeTab.attach({
      contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")]
    });
  }
});

myScript.js

var first = $(".avatar:first");
var url = first.attr("href");

现在我一直在研究如何将 url 变量传递回 main.js,以便它可以在新选项卡中打开 url。在 myScript.js 中,我无权访问在 main.js 中声明的选项卡对象。

最佳答案

当然! attach 方法返回一个 worker 实例,您可以使用它来设置事件处理程序:

// main.js
var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;

var widget = widgets.Widget({
  id: "div-show",
  label: "Show divs",
  contentURL: "http://www.mozilla.org/favicon.ico",
  onClick: function() {
    var worker = tabs.activeTab.attach({
        contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")]
    });
    worker.port.on('got-url', function(data) {
        tabs.open(data.url);
    });
  }
});

// myScript.js script:
var first = $(".avatar:first");
var url = first.attr("href");
self.port.emit('got-url', {url: url});

有关此的更多信息,请参阅附加方法的文档:

https://addons.mozilla.org/en-US/developers/docs/sdk/1.5/packages/addon-kit/docs/tabs.html#attach%28options%29

...以及内容脚本指南:

https://addons.mozilla.org/en-US/developers/docs/sdk/1.5/dev-guide/addon-development/web-content.html

警告:尚未运行此代码,但它应该可以运行。

关于javascript - 附加生成器 : ContentScript and back to Addon code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9756907/

相关文章:

javascript - 如何检查深层嵌套对象是否未定义?

Javascript 模板 - 深度嵌套是可能的

javascript - 如何在 SharePoint 2013 JSOM 中设置 URL 字段的值

javascript - 我怎样才能在 Firefox 中缩小?

javascript - 在进入 Mozilla Firefox 中的 JavaScript 引擎之前拦截 JavaScript

javascript - 使线变短。 80 个字符限制

javascript - 使用JQuery根据scrollHeight调整元素

JQuery 使按下的按钮处于事件状态,而所有其他按钮处于非事件状态

javascript - 从 firefox 扩展新加载的选项卡中列出并调用 js 函数

firebug - 模拟 Firebug 在 Firefox 扩展中跨选项卡平滑打开 Pane 的能力