Firefox插件SDK(jetpack):将页面脚本表单数据传递到index.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(

我想将页面脚本表单数据传递到扩展名中的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()函数。但是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()也可以正常工作