1

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

Я устанавливаю в «Enabled» переменный в моем фоне странице и используя chrome.extension.sendRequest() в моем сценарии содержания & chrome.extension.onRequest.addListener() в моей странице расширения фона, чтобы восстановить включенный/выключенный состояние

скрипта фона внутреннего абонента:

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; пожаров (эта функция работает отлично)

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

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

а вот потом, используя передачу сообщений с chrome.extension.sendRequest() для запроса„включен“установка в фоновом режиме страницы, и делает запрос blocki нг логика внутри ее обратного вызова

(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); 
}()); 

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

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

ответ

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