2011-12-13 17 views
3

我的擴展在我不控制的現有網頁上運行。我想爲它提供一個選項頁面。我沒有想到的是如何從注入的代碼中獲取選項值。當然,localStorage不是共享的。我試過在兩個方向上使用sendRequest/addListener,儘管將選項頁面中的值推送到注入的代碼比以其他方式推送更爲可取。從選項頁面獲取數據到注入的代碼

在開始的時候,我乾脆把操作頁面(一個代碼注入)的選項複選框,這些複選框中localStorage設定值:

localStorage.showStuff = !!$(evt.target).attr(‘checked’); 

然後我檢查這些值在代碼:

if (localStorage.showStuff == ‘true’) { … } 

我感動的複選框代碼到選項頁,把它做一個sendRequest當選項改變了,有我注入的代碼有消息監聽器,但它沒有得到消息(我的背景 頁面確實如此,但這並不能幫助我)。我也嘗試讓注入的代碼向選項頁面回調一個回調,但sendResponse對象似乎只在通知處理程序期間工作(並不令人意外,但我不得不試一試)。

現在我的清單的permissions列出了外文頁面("http://example.com/*")和「tab」

有一件事我知道我能做到通過回調異步查詢選項頁,但這些代碼不會(和真的不能)無嚴重改寫異步工作。

任何和所有的想法表示歡迎,在此先感謝。

回答

1

要記住的是隻有背景頁面是長壽命的。您的Chrome擴展的其餘部分是暫時的(網站導航期間的內容腳本,僅在打開時選項頁面等)。

所以,你必須使用短信和保存使用背景頁面的東西。但是,準備好即將登陸的存儲API。這會讓事情變得更容易!

檢查出來here

+0

所以,如果我理解你,這意味着我的選項頁面應該發送消息到我的背景頁面有關選項更改,並且注入的代碼應該詢問背景頁面的值。在我的情況下,注入的代碼似乎只要我所在的頁面一直存在,這就是我所需要的,但在任何情況下,這仍然使我面臨查詢與異步問題。但是這些信息很有幫助,我會嘗試應用它,謝謝! – kcrca

3

我是新來的Chrome瀏覽器擴展,但它從工作完全兩者的背景劇本和選項頁面,當我試圖讀/寫的localStorage。

我還沒有嘗試過本地的localStorage但Chrome的存儲API。

看看這個

代碼A:(套)

chrome.storage.sync.set({'key':'qwe'}); 

代碼B:(GET)

chrome.storage.sync.get('key', function(response) { 
    console.log(response); // 'qwe' 
}); 

ü可以把任何代碼中的背景和代碼B在選項頁面或其他方式。 他們正在使用相同的存儲。

這對我有用。我希望你也能去那裏。

+0

非常感謝你 – Badiparmagi

相關問題