2012-09-30 2 views
1

В настоящее время я создаю расширение Safari. У меня есть простая страница с тремя кнопками. При нажатии этих кнопок мне нужно выполнить некоторые действия на Глобальной странице, которые включают в себя манипулирование localStorage и еще пару других вещей.Как передать сообщение из всплывающего окна Safari на глобальную страницу?

Я не могу найти способ отправить сообщение из popover на глобальную страницу. Кажется, есть куча тем при отправке с popover на скрипт контента, но ничего на глобальную страницу.

Это, наверное, безумно просто, и я просто что-то пропустил. Поблагодарили бы за любую помощь.

ответ

7

Вам не нужно использовать передачу сообщений между popover и глобальной страницей. Они делят объект safari.extension, поэтому вы можете получить доступ к контексту одного из другого.

С помощью popover вы можете получить доступ к функциям глобальной страницы и другим объектам через safari.extension.globalPage.contentWindow. Например, если у вас есть функция foo на глобальной странице, вы можете позвонить ей из popover с помощью safari.extension.globalPage.contentWindow.foo().

С глобальной страницы вы можете получить доступ к объектам popover через safari.extension.popovers[i].contentWindow, где i - индекс popover.

Кстати, popovers и общая страница имеют одинаковый объект localStorage, поэтому нет необходимости использовать, например, safari.extension.globalPage.contentWindow.localStorage из popover; localStorage сам по себе получит доступ к тому же магазину, который использует глобальная страница.

+0

Спасибо, что сделал! – Vivek

+0

У меня есть функция getTimeline на глобальной странице. Когда я пытаюсь получить доступ к его форме, перейдите на страницу с помощью safari.extension.globalPage.contentWindow.getTimeStamp, получив следующую ошибку: «TypeError: safari.extension.globalPage.contentWindow.getTimeStamp не является функцией. (В« safari.extension.globalPage.contentWindow. getTimeStamp() ',' safari.extension.globalPage.contentWindow.getTimeStamp 'не определено) " –

+0

Это' getTimeline' или 'getTimeStamp'? – canisbos

Смежные вопросы