Добавление и удаление правил

Если вы желаете задекларировать правила для события onPageChanged, то используйте chrome.declarativeContent.onPageChanged.*. Где * может означать addRules или removeRules. Метод addRules принимает массив правил и callback-функцию.

var rule1 = {
    id : "some_rule_A", //Если не установлено свойство, оно будет создано
    priority : 100, //Опция, значение по умолчанию 100
    conditions : [/*условия*/],
    actions : [/*действия*/]
};
...
var ruleList = [rule1,rule2,...];
chrome.declarativeContent.onPageChanged.addRules(ruleList);

Для удаления правил используется метод removeRules. Он принимает массив с идентификаторами правил (например, [rule1.id, rule2.id] ) в качестве первого параметра и функцию обработки в качестве второго параметра. Если массив не определён, то будут удалены все зарегистрированные правила.

Листинг 2-9. Chapter2/PageActionNotes/event_script.js
//region {переменные и функции}
var consoleGreeting = "Hello World! - from event_script.js";
var ruleStackOverflowHost = {
    "conditions" : [
        new chrome.declarativeContent.PageStateMatcher({
            "pageUrl" : {
                "hostEquals" : "stackoverflow.com",
                "schemes" : ["http","https"]
            }
        })
    ],
    "actions" : [new chrome.declarativeContent.ShowPageAction()]
};
//end-region

Примечание:
Правила добавляются во время установки расширения, при помощи события runtime.onInstalled. Однако, это событие также срабатывает, когда выполняется обновление расширения. Соответственно, вы должны сначала удалить ранее установленные правила, а затем зарегистрировать новые правила.

Листинг 2-10. Chapter2/PageActionNotes/event_script.js
//region {вызов}
console.log(consoleGreeting);
chrome.runtime.onInstalled.addListener(function() {
    //Удаляем и заменяем правила
    chrome.declarativeContent.onPageChanged.removeRules(undefined,function() {
        //Указываем новые правила
        chrome.declarativeContent.onPageChanged.addRules([ruleStackOverflowHost]);
    });
});
//end-region

results matching ""

    No results matching ""