2012-03-02 4 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 указано, что API-интерфейсы chrome.extensions * доступны для сценариев контента. Но я никогда не пробовал этого.

Тогда вам нужно будет отправить сообщения с фоновой страницы на скрипт контента при подключении. Вы даже можете отправить одно сообщение со всеми настройками в литеральном объекте.

Here is an example создания двухсторонней связи, о которой я писал ранее. Вы можете реализовать это или создать собственное решение, но я думаю, что именно так вы достигнете того, что ищете.

+0

О, боже, мне нужно написать несколько файлов, чтобы сохранить некоторые параметры, поэтому я предпочитаю greasemonkey на firefox. В любом случае, спасибо. – Rufus

+0

@ Rufus naw, это будет просто, просто базовый javascript. Вы даже можете скопировать код, который я дал ссылку. Создайте несколько прототипов для отправки локального хранилища в виде стенового объекта. Затем в вашем скрипте контента просто проанализируйте его и бум, который вы готовы, основываясь на том, что я вам дал, это должно быть только пара строк кода. – jjNford

+0

Спасибо, я знаю это, и я очень ценю вашу помощь. Но, честно говоря, я просто хочу написать простые пользовательские скрипты и разместить их на usercripts.org. Если расширение Chrome настолько сложно писать, то это не будет хорошей идеей для меня. – Rufus

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