Firefox插件SDK(jetpack):将页面脚本表单数据传递到index.js?
我想将页面脚本表单数据传递到扩展名中的index.js。怎么做?我正在尝试通过content-script.js发送它。为此,我将content-script.js文件包含到页面脚本中。content-script.js包含以下代码行-Firefox插件SDK(jetpack):将页面脚本表单数据传递到index.js?,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,我想将页面脚本表单数据传递到扩展名中的index.js。怎么做?我正在尝试通过content-script.js发送它。为此,我将content-script.js文件包含到页面脚本中。content-script.js包含以下代码行- function getInput(){ var url = document.getElementById('addr').value; self.port.emit("addr",url); } 现在,我从页面脚本提交按钮调用getInput(
function getInput(){
var url = document.getElementById('addr').value;
self.port.emit("addr",url);
}
现在,我从页面脚本提交按钮调用getInput()函数。但是self.port.emit在这里不起作用。我找到了解决方案。这可以通过创建DOM事件来完成 在页面脚本中,我创建了如下自定义DOM事件-
add.html->
<html>
<head>
<script>
function sendMessage() {
var url = document.getElementById('addr').value;
//console.log(url);
var event = document.createEvent('CustomEvent');
event.initCustomEvent("msg", true, true, url);
document.documentElement.dispatchEvent(event);
}
</script>
</head>
<body>
<form>
<input type="text" id="addr" name="addr">
<button onclick="sendMessage()">Add</button>
</form>
var panels = require("sdk/panel");
var panel = panels.Panel({
width: 200,
height: 200,
contentURL: "./page.html",
contentScriptFile: "./helper.js",
onHide: handleHide,
onMessage: function(url) {
console.log(url); // displays the user input
}
});
最后index.js“panel”代码如下所示-
add.html->
<html>
<head>
<script>
function sendMessage() {
var url = document.getElementById('addr').value;
//console.log(url);
var event = document.createEvent('CustomEvent');
event.initCustomEvent("msg", true, true, url);
document.documentElement.dispatchEvent(event);
}
</script>
</head>
<body>
<form>
<input type="text" id="addr" name="addr">
<button onclick="sendMessage()">Add</button>
</form>
var panels = require("sdk/panel");
var panel = panels.Panel({
width: 200,
height: 200,
contentURL: "./page.html",
contentScriptFile: "./helper.js",
onHide: handleHide,
onMessage: function(url) {
console.log(url); // displays the user input
}
});
工作很好。还有别的办法吗?这个有效吗
使用self.port.emit()和panel.port.on()也可以正常工作