Расширение Chrome: создайте вкладку и вставьте в нее скрипт содержимого

Получив сообщение из скрипта контента, я хочу создать новую вкладку и заполнить страницу, которую она открывает динамически (сейчас яЯ просто пытаюсь превратить недавно созданную страницу в красный).

eventPage.js:

// ... code that injects another content script, works fine

// Problem code...
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) 
  {
    chrome.tabs.create({url: chrome.extension.getURL("blankpage.html")}, 
                       turnTabRed);      
  });

function turnTabRed(tab)
{
  chrome.tabs.executeScript(
    tab.id,
    {code: 'document.body.style.backgroundColor="red"'}
  );
}

Это успешно создает новую вкладку и загружаетblankpage.html (это просто HTML-страница с некоторым текстом) хорошо, но не может закрасить фон красным цветом. После вставкиconsole.log() заявления в разных местах и дурачиться в отладчике, я убедился, чтоturnTabRed называется,tab.id действительно идентификатор недавно созданной вкладки, и если я позвонюdocument.body.style.backgroundColor="red" из консоли фон новой вкладки становится красным. Я заметил, что если бы я добавил

(*)

chrome.tabs.query(
    {}, function (tabArr) { for (var i = 0; tabArr[i]; i++)    
                              console.log(tabArr[i].title); });

в телоturnTabRed название новой вкладки не будет выводиться на консоль, что предполагает, что сценарий вводится слишком рано, поэтому я попытался отложить внедрение с помощьюsetTimeout и когда это не удалось, я попытался прослушать событие завершения состояния:

function turnTabRed(tab)
{
  chrome.tabs.onUpdated.addListener(
    function(tabUpdatedId, changeInfo, tabUpdated)
    {
      if (tabUpdatedId == tab.id && changeInfo.status && 
                                    changeInfo.status == 'complete')
        chrome.tabs.executeScript(
          tabUpdatedId,
          {code: 'document.body.style.backgroundColor="red"'});
    });
}

что тоже не удалось. Вызов (*) после ожидания сsetTimeout распечатал новую вкладкуназвание вместе со всеми остальными.

Какие'S не так? Как я могу создать новую вкладку, загрузить страницу HTML, а затем сделать ее фон красным?

Ответы на вопрос(1)

Ваш ответ на вопрос