Закрытие панели из iframe в дополнениях Firefox - PullRequest
2 голосов
/ 17 марта 2012

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

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

1 Ответ

2 голосов
/ 18 марта 2012

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

...