реализация кнопки включения / выключения расширения Chrome - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь реализовать переключатель включения / выключения для моего расширения, которое представляет собой скрипт содержимого, который подключается к событию «beforeload» и выборочно отменяет запросы, основываясь на некоторой логике (например, вы хотите запретить URL-адреса определенного доменазагрузка, конкретный URL из загрузки и т.включенное / отключенное состояние расширения

фоновый скрипт:

Settings = {};
Settings.enabled = 1;

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {

        if (request.getState == "enabled") {
            sendResponse({result: Settings.enabled});
        } else {
            sendResponse({});
        }
    }
);

У меня есть всплывающая страница, которая обрабатывает настройку включенной / отключенной переменной.При нажатии кнопки «Включить» срабатывает chrome.extension.getBackgroundPage().Settings.enabled = 1;, а при нажатии кнопки «Отключить» срабатывает
chrome.extension.getBackgroundPage().Settings.enabled = 0; (эта функция работает нормально)

Мой сценарий содержимого перед Я начал проверять переменную «enable / disable» (should_block_request - псевдокод):

(function() {
    document.addEventListener("beforeload", function(event) {
        if (should_block_request) {
            event.preventDefault();
        }
    }, true);
}());  

А здесь это впоследствии , используя передачу сообщений с chrome.extension.sendRequest()запросить параметр «enabled» на фоновой странице и выполнить логику блокировки запросов внутри своего обратного вызова

(function() {
    document.addEventListener("beforeload", function(event) {
        chrome.extension.sendRequest({getState: "enabled"}, function(response) {
            var enabled = response.result;
            if (!enabled) {
                return; 
            } else {
                if (should_block_request) {
                    event.preventDefault();
                }
            };
        });
    }, true);
}());

Скрипт содержимого «before» работает, как и ожидалось, блокирует запросы при выполнении критериев, но когдая пробую «потом» версию моего скрипта контента, критерии все еще выполнены, но запросы не блокируются, даже если вызывается event.preventDefault ().

Является ли chrome.extension.sendRequest () правильным способом проверки переменной Settings.enabled внутри обратного вызова обработчика события «beforeload»?Нужно ли вызывать event.preventDefault () на уровень выше, чем у меня сейчас?

1 Ответ

0 голосов
/ 02 февраля 2012

Я не уверен, что это полезно, но в chrome v16 и более поздних расширениях может отключить / включить JavaScript.

Вот одно из таких расширений: http://code.google.com/p/chromium/issues/detail?id=71067

...