2012-09-30 5 views
1

현재 Safari Extension을 구축 중입니다. 3 버튼이있는 간단한 popover 페이지가 있습니다. 이러한 버튼을 클릭하면 local page와 몇 가지 다른 것들을 조작하는 것과 관련된 글로벌 페이지에서 몇 가지 작업을 수행해야합니다.Safari Extension popover에서 글로벌 페이지로 메시지를 전달하는 방법은 무엇입니까?

popover에서 글로벌 페이지로 메시지를 보낼 방법이없는 것 같습니다. popover에서 컨텐트 스크립트로의 디스패치에는 주제가 많지만 글로벌 페이지에는 아무 것도없는 것처럼 보입니다.

그것은 아마 미친 듯이 간단하고 나는 단지 뭔가를 놓치고 있습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

7

popover와 글로벌 페이지간에 메시지 전달을 사용할 필요가 없습니다. 두 개체는 safari.extension 개체를 공유하므로 다른 개체의 컨텍스트에 액세스 할 수 있습니다.

popover에서 safari.extension.globalPage.contentWindow을 통해 글로벌 페이지의 기능 및 기타 개체에 액세스 할 수 있습니다. 예를 들어, 글로벌 페이지에 foo 함수가있는 경우 safari.extension.globalPage.contentWindow.foo()으로 popover에서 호출 할 수 있습니다.

글로벌 페이지에서 safari.extension.popovers[i].contentWindow을 통해 popover 개체에 액세스 할 수 있습니다. 여기서 i은 popover의 인덱스입니다.

덧붙여서, popovers와 글로벌 페이지는 같은 localStorage 개체를 공유하므로, 예를 들어 팝업에서 safari.extension.globalPage.contentWindow.localStorage을 사용할 필요가 없습니다. 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