Расширение Chrome запускает процесс на специальной вкладке - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь запустить некоторые скрипты на специальной вкладке, которая назначается на странице нажатой кнопки расширения.

Например, если я нажимаю кнопку, которая находится в popup.html, она должназапускать только на этой странице до конца скрипта, даже если я переключаюсь на другую вкладку.

Мой алгоритм такой:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
  //Some other processes
  chrome.tabs.getSelected(null,function(tabS) {
    //Some other processes
    chrome.tabs.executeScript(null, {file:"some_js.js"});
  });
});

Я использую некоторые операции DOM на странице.Если я переключаюсь на другую вкладку, процесс прерывается, потому что он слушает текущую вкладку.Я хочу назначить идентификатор для вкладки процесса и заставить эти коды работать на этой вкладке.Как я могу это сделать?

1 Ответ

0 голосов
/ 15 февраля 2019

Добавить элемент кнопки в popup.html.Затем добавьте этот код в popup.js:

function handleClick (e) {
  chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
    chrome.tabs.executeScript(tabs[0].id,
        { code: `setInterval(function () { console.log('This event is running only at the tab with domain: ${tabs[0].url} after 1000ms') }, 1000)` })
  })
}

document.addEventListener('DOMContentLoaded', function () {
  const button = document.getElementById('popup-button')
  button.addEventListener('click', handleClick)
});

Когда вы нажмете кнопку, этот код будет выполнен только на этой конкретной вкладке.Вы сможете увидеть это сообщение в консоли разработчика.

Код также может быть другим файлом JS, имеющимся в вашем расширении.Точно так же, как вы сделали это в своем вопросе.

Obs: chrome.tabs.query здесь на самом деле не требуется, так как если вы выполняете chrome.tabs.executeScript, передавая ноль в качестве параметра, он уже получает активную вкладку в текущем окне,Я также добавил разрешение вкладок, чтобы получить атрибут tabs[0].url.В любом случае, таким образом, вы получаете больше контроля над тем, с какими вкладками вы манипулируете, когда получаете их атрибуты tabId и url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...