我刚刚开始使用 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/