2012-03-02 77 views
0

我仔細閱讀Google Chrome Extensions Developer's Guide,它告訴我要在localStorage中保存選項,但content_scripts如何能夠訪問這些選項?我怎樣才能得到在options.html中設置的選項?

樣品:

我想編寫腳本,針對一對夫婦域,這個腳本應該分享這些領域的一些選項。

content_scripts:

//Runs on several domains 
(function(){ 
    var option=getOptions(); 
    //Get options which have been set in options.html 
    if(option){ 
     doSome(); 
    } 
}) 

option_page:

<html> 
    <head> 
     <title>My Test Extension Options</title> 
    </head> 
    <body> 
     option: <input id="option" type="text" /><br /> 
     <input id="save" type="submit" /><br /> 
     <span id="tips">option saved</span> 
     <script type="text/javascript"> 
      (function(){ 
       var input=document.getElementById('option'); 
       var save=document.getElementById('save'); 
       var tips=document.getElementById('tips'); 
       input.value=localStorage.option||''; 
      // Here localStorage.option is what I want content_scripts to get. 
       function hideTips(){ 
        tips.style.visibility='hidden'; 
       } 
       function saveHandler(){ 
        localStorage.option=input.value||''; 
        tips.style.visibility='visible'; 
        setTimeout(hideTips,1000); 
       } 
       hideTips(); 
       save.addEventListener('click',saveHandler); 
      })(); 
     </script> 
    </body> 
</html> 

回答

2

我想你可以使用chrome.extensions * API創建的通信線路的到被下運行的後臺頁面的。擴展名,從而爲您提供本地存儲。

我認爲這是可能的,因爲Content Script文檔指定chrome.extensions * API可用於內容腳本。但我從來沒有試過這個。

然後,您只需在建立連接時從後臺頁面向內容腳本發送消息。你甚至可以發送一個包含字面對象中所有設置的消息。

Here is an example創建雙向溝通,我寫了早些時候。你可以實現這個或創建一個自定義的解決方案,但我認爲這是你將如何實現你正在尋找的。

+0

哦,上帝,我必須寫幾個文件只是爲了保存一些選項,這就是爲什麼我更喜歡firefox上的greasemonkey。不管怎樣,謝謝你。 – Rufus 2012-03-02 23:57:59

+0

@Rufus naw,這將很容易,只是基本的JavaScript。你甚至可以複製我給鏈接的代碼。創建一些原型方法以將本地存儲作爲字符串化對象發送。然後,在您的內容腳本中解析出來,並根據我提供的內容準備好,這應該只是幾行代碼。 – jjNford 2012-03-03 00:02:02

+0

謝謝,我知道,我非常感謝你的幫助。但老實說,我只想寫一些簡單的用戶腳本,並將其放在userscripts.org上。如果Chrome擴展程序寫得太複雜,那麼對我來說這不是一個好主意。 – Rufus 2012-03-03 01:13:16