Firefox addon-sdk:获取附加面板的元素

时间:2014-07-19 18:09:03

标签: javascript firefox firefox-addon firefox-addon-sdk

我有一个非常简单的firefox插件 - 使用addon-sdk进行开发。在教程中,我发现在切换按钮上提到了附加面板,但是我无法找到一种方法(例如)在此面板中点击回调按钮。

这是简化的面板:                       

    <body>
        <table width="100%">
            <tr>
                <td colspan="2" align="center">
                    <input type="button" id="btnInject" value="Inject!">
                </td>
            </tr>
        </table>
    </body>
</html>

这里是main.js档案的一部分:

var self = require("sdk/self");
var tabs = require("sdk/tabs");

var { ToggleButton } = require('sdk/ui/button/toggle');
var panels = require("sdk/panel");
var self = require("sdk/self");

var button = ToggleButton({
  id: "my-button",
  label: "my button",
  icon: {
    "16": "./icon-16.png",
  },
  onChange: handleChange
});

var panel = panels.Panel({
  contentURL: self.data.url("popup.html"),
  onHide: handleHide
});

function handleChange(state) {
  if (state.checked) {
    panel.show({
      position: button
    });
  }
}

function handleHide() {
  button.state('window', {checked: false});
}

我需要分配onclick功能,我已经尝试了panel.getElementById('btnInject').onclick,但找不到getElementById作为功能。还尝试了一个文档对象,但它也没有定义。

任何人都可以帮助我,如何访问这个元素?

1 个答案:

答案 0 :(得分:3)

您无法直接访问面板的DOM。相反,您需要attach a small content script并使用panel.port API向main.js发回消息。

有关详细信息,请参阅Communicating using port文档。

相关问题