Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Пример расширения для crome (https://javascript.ru/forum/css-html-browser/45711-primer-rasshireniya-dlya-crome.html)

scfx 13.03.2014 06:45

Пример расширения для crome
 
Добрый день.
Не могу разобраться как localStorage передать в content_scripts.
Был бы признателен если кто то выложил работоспособное расширение:
- в options - указывается переменная;
- на ya.ru в input вставляется.

Zuenf 13.03.2014 18:15

Цитата:

как localStorage передать в content_scripts.
Есть три фала bg.js, content_script.js и options.js

content_script.js:
//Отправляем запрос на страницу bg.js
chrome.runtime.sendMessage('getOptions', function(response){
                options = response ? JSON.parse(response) : {};
                console.log(options);
            //Дальше твои скрипты
});

bg.js:
//Стандартные настройки:
var defaults = {
            test: 'ok',
            secondTest: 23
    }

//Установка стандартных настроек, если они еще не установлены
function setOptions(defaults){
    var options = localStorage.options ? JSON.parse(localStorage.options) : {};
    for(var key in defaults){
        options[key] = options[key] || defaults[key];
    }
    localStorage.options = JSON.stringify(options);
}

setOptions(defaults);

//Ловим запросы
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse){
    if(msg == 'getOptions'){
         response = localStorage.options;
    }
    sendResponse(response);
})

options.js:
//Здесь мы можем просто устанавливать и менять значение localStorage.options
//Например

options = localStorage.options ? JSON.parse(localStorage.options) : {};
options.test = 'options ok';

localStorage.options = JSON.stringify(options);


В manifest.json должны быть включены следующие строчки:
"background": {
      "scripts": [ "bg.js" ]
    },
    "options_page": "options.html",
    "permissions":["storage"],
    "content_scripts":[
        {
            "js":["content_script.js"]
        }
    ]

scfx 17.03.2014 05:45

Спасибо, вроде дошло =)


Часовой пояс GMT +3, время: 08:39.