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

on("show", function()) doesn't work in FF extension

我有 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();
});

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

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

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

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

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