加载项生成器:ContentScript并返回到插件代码? [英] Add-on Builder: ContentScript and back to Addon code?

查看:112
本文介绍了加载项生成器:ContentScript并返回到插件代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的Firefox附加组件生成器,这是我到目前为止:
$ b main.js:

  var widgets = require(widget); 
var tabs = require(tabs);
var data = require(self)。data;

var widget = widgets.Widget({
id:div-show,
label:显示div,
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,在新标签页中打开网址。从myScript.js中,我无法访问main.js中声明的tabs对象。

解决方案

当然! attach方法返回一个你可以用来设置一个事件处理器的工作者实例:

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

var widget = widgets.Widget({
id:div-show,
label:显示div,
contentURL:http:// (){
var worker = tabs.activeTab.attach({
contentScriptFile:[data.url(jquery.js ),data.url(myScript.js)]
});
worker.port.on('got-url',函数(数据){
tabs.open data.url);
});
}
});

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

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

https://addons.mozilla.org/zh-CN/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

警告:代码,但它应该工作。


I'm using the Firefox Add-on Builder and here is what I have so far:

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() {
    tabs.activeTab.attach({
      contentScriptFile: [data.url("jquery.js"), data.url("myScript.js")]
    });
  }
});

myScript.js

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

Now I'm stuck on how to have the url variable passed back to main.js so it can open the url in a new tab. From myScript.js I don't have access to the tabs object declared in main.js.

解决方案

Sure! The attach method returns a worker instance that you can use to set up an event handler:

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

For more on this, see the docs for the attach method:

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

...as well as the content scripts guide:

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

Caveat: haven't run this code, but it should work.

这篇关于加载项生成器:ContentScript并返回到插件代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆