2013-01-20 33 views
0

我刚刚开始使用Firefox插件来帮助我的团队加速我们的工作,我正在尝试创建的内容: 当您在特定网站上时(让我们打电话它mysite.com/input)我想从剪贴板上存储的的值自动填写一个ID为“textinput”的输入。 是的,它很简单,但它只是简单地粘贴它,不是吗?...现在这是扭曲:Firefox addon sdk:根据剪贴板内容从其他网站获取价值

我需要一个其他形式的值:在剪贴板上它是x/y/Z。有一个数据库网站(我们称之为database.com),在这个网站上,像database.com?s = x/y/z这样的搜索将直接从该网页获得正确的值,因为它有一个ID :#result

我迷路了如何正确的页面和内容脚本之间的沟通,我甚至不能确定在我应该使用什么样的顺序pagemod和页面工人

请帮我!谢谢!

回答

2

的基本流程是这样的:

  • 在你的内容脚本,你得到的价值形态形式,不知何故。我会留给你的。

  • 还是在内容脚本,你使用的数据发送到main.js self.port.emit:

代码:

self.port.emit('got-my-value', myValue); 
  • 在main.js,你然后会收到'got-my-value'事件,并使用请求模块发出跨域请求。

代码:

require('page-mod').PageMod({ 
    include: 'somesite.com', 
    contentScriptFile: data.url('somescript.js'), 
    onAttach: function(worker) { 
     worker.port.on('got-my-value', function(value) { 
      require('request').Request({ 
       url: 'http://someurl.com', 
       onComplete: function(response) { 
        console.log(response); 
        // maybe send data back to worker? 
        worker.port.emit('got-other-data', response.json); 
       } 
      }).post(); 
     }); 
    } 
}); 
  • 如果需要接收数据回到原来的工作人员,您在其他监听事件回来。

代码:

self.port.on('got-other-data', function(value) { 
    // do something 
}) 
+0

谢谢!这是惊人的:)我怎么能与“请求”结果工作?我不得不改变为“response.text”,因为它会发送一个对象。我只需要“someurl.com”的一部分,幸运的是在#ID 现在它的工作原理是这样的: 'require('request')。Request({url:'http:// en。 wikipedia.org/wiki/'+value, onComplete:function(response){ console.log(response); //也许发回数据给工作人员? worker.port.emit('got-other-data' ,response.text); } } ' –

+0

对不起,我无法格式化它的代码...什么是.post();在这种情况下? –

+0

请求模块的文档可在这里找到:https:/ /addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/ request.html – canuckistani

0

我一直在用同样的问题挣扎在过去的2天,直到我发现这一点:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Cross_Domain_Content_Scripts

它们指示以下内容:

但是,您可以启用这些功能fo通过将 添加到您的附加组件的软件包中。JSON的“跨域内容”下 键,它本身的生活下的“权限”键:

"permissions": { 
    "cross-domain-content": ["http://example.org/", "http://example.com/"] } 

上市必须包括计划 和完全合格的域名,该域名和这些必须与为内容提供服务的域名 完全匹配 - 因此在上例中,内容 脚本将不被允许访问从 https://example.com/提供的内容。通配符是不允许的。此功能目前仅适用于内容脚本,不适用于您的加载项附带的HTML文件中包含的页脚 。

这对我来说诀窍。