javascript - 火狐插件 SDK : retrieving value from a different site based on clipboard content

标签 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

请帮帮我!谢谢!

最佳答案

基本流程是这样的:

  • 在内容脚本中,您以某种方式从表单中获取值。我将把这个问题留给你。

  • 仍然在内容脚本中,您使用 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
})

关于javascript - 火狐插件 SDK : retrieving value from a different site based on clipboard content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430711/

相关文章:

javascript - 如何处理查询中的多个 id,因为我在以下代码中遇到问题

css - Flexbox 容器中的省略号

javascript - Firefox 上的 event.target

firefox - Mozilla firefox 插件可将 url 从一个域名重定向到另一个域,而无需更改完整的 url

javascript - 注入(inject)脚本错误 : Script returned non-structured-clonable data on Firefox extension

javascript - 未处理的 postMessage 会泄漏内存吗?

javascript - 使用 JQuery 的动态上下文菜单

javascript - for-loop 无限循环由于变量冲突

javascript - 引用错误 : require is not defined

javascript - 如何在我的 firefox 扩展中运行本地 exe?