расширение сафари: отправка сообщения из внедренного скрипта в всплывающее окно

я занят созданием расширения букмекерской конторы в сафари и столкнулся со следующей проблемой. В моем всплывающем окне у меня есть iframe, который включает кнопку. Когда эта кнопка (кнопка отправки) нажата, должно быть отправлено следующее сообщение:

window.addEventListener('message', function(e){
    if(e.data.command == 'closeSymbalooBookmarker'){
        window.setTimeout(function(){
            window.close();
        }, 2000);
    }
});

как вы можете видеть, это закрывает всплывающее окно за 2 секунды (приведенный выше скрипт сделан в расширении Chrome).

Мне нужно отправить сообщение из сценария ввода в всплывающее окно, чтобы я мог закрыть всплывающее окно в окне всплывающего окна. Или есть какой-то другой путь к этому?

Спасибо.


person Navid    schedule 08.11.2013    source источник
comment
здесь нет никого, кто мог бы помочь мне с этим?   -  person Navid    schedule 08.11.2013


Ответы (1)


Глобальная страница — лучшее место для получения сообщений от внедрённого скрипта.

Сделайте что-то вроде этого:

глобальный.js

safari.application.addEventListener('message', handleMessage, false);
function handleMessage(msg) {
    if (msg.name === 'hidepopover') {
        safari.extension.popovers[0].hide()
    }
}

введенный .js

setTimeout(function() {
    safari.self.tab.dispatchMessage('hidepopover');
}, 2000);
person Matt Swain    schedule 08.11.2013
comment
допустил ошибку, в конце концов это не сработало :( всплывающие окна скрываются, когда вы сразу нажимаете на них. Они должны быть скрыты после того, как пользователь нажал кнопку отправки в iframe, который содержится в popover.html - person Navid; 08.11.2013