我正在使用Firefox Addon SDK开发Firefox Mozilla附加组件/扩展程序。 现在,当用户点击我的附加按钮时,我想从显示的网站获得字段值“user”。网页的表单如下所示:
<form name="input" action="html_form_action.asp" method="get">
Username: <input type="text" name="user" id="user" value="name of the user">
<input type="submit" value="Submit">
所以我需要在Add-on文本框中显示值“用户名”,这是我在Add-on中创建的。
但我无法弄清楚如何将数据从网站传递到ADDON VARIABLE / SITE。
答案 0 :(得分:2)
您需要使用内容脚本执行此操作。假设你有这样的HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form><input type="text" id="txt-field" value="this is the value"/></form>
</body>
</html>
...您需要做的是使用page-mod模块将内容脚本附加到页面,然后可以获取值并将其发回。
main.js:
const data = require('self').data;
var currentVal = false;
require('page-mod').PageMod({
include: 'https://some.url/index.html',
contentScriptFile: data.url('script.js'),
onAttach: function(worker) {
worker.port.on('val', function(data) {
currentVal = data;
console.log(data);
});
}
});
的script.js:
self.port.on('fetch-value', function() {
self.port.emit('val', document.querySelector('#txt-field').value);
});
这是一个非常简单的示例,只是为了向您展示main.js和内容脚本之间的通信是如何工作的。有关更多信息,我强烈建议您阅读有关内容脚本的文档:
https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts