2012-09-30 41 views
1

我目前正在構建一個Safari擴展。我有一個簡單的彈出式頁面,帶3個按鈕。點擊這些按鈕後,我需要在全局頁面上執行一些操作,包括操作localStorage和其他一些事情。如何將郵件從Safari擴展彈出窗口傳遞到全局頁面?

我似乎無法找到任何方式將信息從popover分發到全局頁面。似乎有一堆關於從彈出窗口分發到內容腳本的主題,但沒有任何內容涉及到全局頁面。

這可能非常簡單,我只是想念一些東西。將不勝感激任何幫助。

回答

7

您不需要使用popover和全局頁面之間的消息傳遞。它們共享safari.extension對象,因此您可以從另一個對象訪問任何一個的上下文。

從彈出窗口中,您可以通過safari.extension.globalPage.contentWindow訪問全局頁面的函數和其他對象。例如,如果在全局頁面中有功能foo,則可以使用safari.extension.globalPage.contentWindow.foo()從彈出窗口調用它。

從全局頁面,您可以通過safari.extension.popovers[i].contentWindow訪問popover的對象,其中i是popover的索引。順便提一下,popovers和全局頁面共享同一個localStorage對象,所以不需要使用popover中的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

相關問題