Закрытие панели из iframe в дополнениях Firefox

Я создаю расширение Firefox с надстройками SDK, которые открывают iframe с информацией с текущей страницы. После некоторых действий с iframe мне нужно будет закрыть объект Panel, но я не знаю, как передать это сообщение. Есть идеи? В Chrome я смог просто закрыть окно, и расширение закрылось.

Код: https://github.com/kippt/kippt-firefox/blob/master/lib/main.js


person jorilallo    schedule 17.03.2012    source источник


Ответы (1)


Боюсь, вам придется создать сценарий контента, который регистрирует слушателя, который будет вызываться, когда вы захотите закрыть панель. Сценарий контента должен связываться с аддоном через 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();

Вот измененная версия вашего кода в конструкторе дополнений.

Это описано в Документация панели SDK.

Я понимаю, что это слишком сложно, вы можете спросить в группе реактивных ранцев, рассматривалось ли возможность window.close() закрыть панель.

person Nickolay    schedule 17.03.2012
comment
Я не уверен, что закрытие панели при закрытии вкладки имеет смысл в качестве общей функции. Панель является частью Chrome браузера и не привязана ни к одной вкладке. - person therealjeffg; 18.03.2012
comment
@canuckistani: я проанализировал это предложение в вопросе следующим образом: когда вы вызываете window.close() в документе, открытом на панели, панель закрывается (в Chrome). Это имеет смысл для меня. - person Nickolay; 18.03.2012
comment
Круто, это то, что я искал. Большое спасибо! - person jorilallo; 18.03.2012
comment
@jorde: рад помочь. Как-то забыл ссылку на документацию SDK, где все это подробно описано. Смотрите новую ссылку в обновленном ответе. - person Nickolay; 18.03.2012