on(" show",function())在FF扩展中不起作用

时间:2015-02-05 09:04:59

标签: javascript firefox-addon

我有FF扩展,其中自动显示面板事件焦点应该在文本输入字段parameter上。我正在使用on("show", function())(在scrip.js中),但无论我在此函数中插入什么,它都无法正常工作。

有什么建议吗?

main.js:

var panel = panels.Panel({
    contentURL: self.data.url("index.html"),
    contentScriptFile: self.data.url("script.js"),
    onHide: handleHide,
    width: 250,
    height: 200
});

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

的script.js:

self.port.on("show", function onShow() {
    document.getElementById("parameter").focus();
});

2 个答案:

答案 0 :(得分:1)

show是一个事件,它被发送到panel.on("eventname")回调。 port用于在插件上下文和面板上下文之间进行消息传递。

即。 panel.port.on(...)panel.on(...)不同。

并且它在面板上下文中不可用。也许您可以为此目的使用pageshow / pagehide dom事件,或者您也可以通过端口将事件从您的插件反映到面板。

答案 1 :(得分:1)

将以下代码添加到main.js帮助:

panel.on("show", function() { 
    panel.port.emit("show");
});