SafariExtension messageEvent - PullRequest
       0

SafariExtension messageEvent

2 голосов
/ 27 августа 2011

Я пытаюсь создать SafariExtension, но у меня есть некоторые проблемы с API-интерфейсом сообщений, на самом деле пример в документе не работает, это: Прокси-серверы Safari

так что работает, а что не работает? Я могу вызвать функцию на глобальной странице из внедренного скрипта. Я не могу отправить ответ на введенный скрипт.

вот что у меня есть:

впрыскивается:

safari.self.tab.dispatchMessage("foo", "bar");

больше не нужно, ошибка в глобальном html.

глобальный:

safari.application.addEventListener("message", function ( e ) {
 if (e.name != 'foo')
   return false;
 e.target.page.dispatchMessage("bar", 'foo'); <-- Undefined on page ...
},false);

Как я уже упоминал, 4-я строка на глобальной странице всегда терпит неудачу, поэтому я не могу отправить ответ на введенный скрипт ...

понятия не имею о документации, поскольку она почти извлечена из документа.

1 Ответ

0 голосов
/ 10 октября 2012

Вам необходимо включить слушателя на целевой странице. Например ...

safari.self.addEventListener("message", function(e) {
    if(e.name == 'bar') {
        alert(e.message);
        // 'foo' would be alerted to the user, as it is the message content.
    };
}, false);

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

...