我刚开始使用firefox插件来帮助我的团队加快工作,我正在努力创建: 当我在特定网站上时(我们称之为 mysite.com/input )我想自动填写一个带有id的输入:“textinput”来自存储在剪贴板上的值即可。 是的,这很简单但它只是粘贴它就够了,不是吗?...现在这里是扭曲:
我需要另一种形式的值:在剪贴板上它是x / y / z。有一个数据库站点(我们称之为database.com),像 database.com?s=x/y/z 这样的搜索将直接从可以获得正确值的页面提供页面因为它有一个id:#result
我迷失了如何在页面和内容脚本之间正确沟通,我甚至不确定我应该以什么顺序使用pagemod和page-worker
请帮帮我!谢谢!
答案 0 :(得分:2)
基本流程如下:
在您的内容脚本中,您会以某种方式从表单中获取值。我会把它留给你。
仍然在内容脚本中,您使用self.port.emit将数据发送到main.js:
代码:
self.port.emit('got-my-value', myValue);
代码:
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文件中。
这对我有用。