Firefox插件sdk:根据剪贴板内容从其他站点检索值

时间:2013-01-20 23:48:42

标签: javascript firefox firefox-addon firefox-addon-sdk

我刚开始使用firefox插件来帮助我的团队加快工作,我正在努力创建: 当我在特定网站上时(我们称之为 mysite.com/input )我想自动填写一个带有id的输入:“textinput”来自存储在剪贴板上的值即可。 是的,这很简单但它只是粘贴它就够了,不是吗?...现在这里是扭曲:

我需要另一种形式的值:在剪贴板上它是x / y / z。有一个数据库站点(我们称之为database.com),像 database.com?s=x/y/z 这样的搜索将直接从可以获得正确值的页面提供页面因为它有一个id:#result

我迷失了如何在页面和内容脚本之间正确沟通,我甚至不确定我应该以什么顺序使用pagemod和page-worker

请帮帮我!谢谢!

2 个答案:

答案 0 :(得分:2)

基本流程如下:

  • 在您的内容脚本中,您会以某种方式从表单中获取值。我会把它留给你。

  • 仍然在内容脚本中,您使用self.port.emit将数据发送到main.js:

代码:

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

答案 1 :(得分:0)

在过去的两天里,我一直在努力解决同样的问题,直到找到这个:

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

他们指出以下内容:

  

但是,您可以通过添加为特定域启用这些功能   将它们添加到“跨域内容”下的加载项 package.json   key,它本身属于“权限”键:

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

列出的域名必须包含该计划   和完全合格的域名,这些必须完全匹配   提供内容的域 - 所以在上面的例子中,内容   将不允许脚本访问由中提供的内容   https://example.com/。不允许使用通配符。这个功能是   目前仅适用于内容脚本,不适用于页面脚本   包含在随附加载项附带的HTML文件中。

这对我有用。