Как открыть расширение chrome сразу после открытия (изменения url) вкладки?

Есть расширение в React.js, и я знаю, что возможно автоматически открыть расширение сразу после того, как вкладка открыта или изменился url, даже если страница грузится 4-5 и более секунд. Пока что расширение открывается после того, как загрузится страница (иногда 4-5 и более секунд)

Код выглядит примерно так (background.js):

//...
chrome.tabs.onActivated.addListener(() => {
  setExtension();
});

chrome.tabs.onUpdated.addListener((tabId, changeInfo) => {
  if (changeInfo.status === 'loading') {
    setExtension();
  }
});

content.js:

chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  if (msg.type === 'INJECT') {
    let modal = document.getElementById('some-modal-id');
    if (!modal) {
      modal = document.createElement('div');
      modal.id = 'some-modal-id';
      modal.innerHTML = `<iframe id="modal-iframe"></iframe>`;
      document.body.appendChild(modal);

      // код со стилизацией iframe

      const iframe = document.getElementById('modal-iframe');
      iframe.src = chrome.runtime.getURL('index.html');
    }
    sendResponse({});
  }
  // ...
}

Пробовала обернуть создание iframe в setTimeout, как советовали здесь wrapping the code that added the iframe to the HTML in setTimeout, но тогда расширение перестало вообще включаться автоматически:

chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  if (msg.type === 'INJECT') {
    const timeoutID = setTimeout(() => {
      let modal = document.getElementById('some-modal-id');
      if (!modal) {
        modal = document.createElement('div');
        modal.id = 'some-modal-id';
        modal.innerHTML = `<iframe id="modal-iframe"></iframe>`;
        document.body.appendChild(modal);

        // some more styling code...

        const iframe = document.getElementById('modal-iframe');
        iframe.src = chrome.runtime.getURL('index.html');
      }
      clearTimeout(timeoutID)
      sendResponse({});
    }, 0)
  }
  // ...
}

Также пробовала проставить "run_at" на "document_start" в manifest.json, как советовали здесь: в manifest.json нужно добавить run_at со значением document_start, но тоже не помогло, расширение также загружается после того, как полностью загрузится страница

"content_scripts": [{
  "js": [ "content.js"],
  "css": ["content.css"],
  "matches": [ "<all_urls>"],
  "run_at": "document_start"
}],

Ответы (0 шт):