在Firefox附加组件中从iframe关闭Panel

时间:2012-03-17 10:15:01

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

我正在创建一个带有插件SDK的Firefox扩展程序,该插件可以打开包含当前页面信息的iframe。在对iframe执行一些操作后,我需要关闭Panel对象,但我不知道如何管道此消息。有任何想法吗?在Chrome中,我只能关闭窗口,扩展程序就会关闭。

代码:https://github.com/kippt/kippt-firefox/blob/master/lib/main.js

1 个答案:

答案 0 :(得分:2)

我担心您必须创建一个内容脚本,该脚本会在您要关闭面板时注册要调用的侦听器。内容脚本应通过self.port.emit('your-event-name')与插件进行通信,附加代码应通过panel.port.on('your-event-name')监听通知以关闭面板:

        var kipptPanel = require("panel").Panel({
            width:400,
            height:245,
            // The contentURL should do this to close the panel:
            // <button id="close-button">self.port.emit('close', null)</button>
            contentURL : "http://localhost:8000/test-panel.html",
            contentScript: "document.getElementById('close-button').addEventListener('click', function() {" +
                           "  console.log('zz');self.port.emit('close', null);" +
                           "});"
        });
        kipptPanel.port.on("close", function (text) {
          console.log(text);
          kipptPanel.destroy();
        });
        kipptPanel.show();

这是modified version of your code in the add-on builder

SDK's panel documentation

对此进行了描述

我意识到这太复杂了,你可能想在jetpack小组中询问是否已经考虑了window.close()关闭小组。