Расширение Chrome определяет, что пользователь добавил новую вкладку - PullRequest
1 голос
/ 17 октября 2019

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

То, что я хочу знать, это то, как отличить, что пользователь открыл новую вкладку.

У меня есть следующая функция:

const interceptRequests = () => {
  chrome.webRequest.onBeforeRequest.addListener(
    async details => {
      if (requestIsUserInitiated(details)) {
        const tabs = await getAllTabs();
        console.log('get all the tabs', tabs);
        console.log('details', details);
      }
    },
    {urls: ["<all_urls>"]},
    ["blocking"]
  );

};

Где:

const requestIsUserInitiated = details =>
  details.type === 'main_frame'
    && !details.initiator // ignoring requests made by the website
    && details.method === 'GET';

Дело в том, что не существует простого способа определить, является либраузер инициировал запрос или пользователя, если нет свойства, которого я не вижу:

enter image description here enter image description here

Конечно, есть следующий слушатель:

chrome.tabs.onCreated.addListener(function(tab) {         
});

Однако, когда Chrome откроет все вкладки, он, вероятно, все равно будет запущен.

Итак, как можно провести различие? Я хочу, чтобы вызвать функцию, когда уверен, что пользователь инициировал новую вкладку, чтобы сделать запрос.

1 Ответ

0 голосов
/ 17 октября 2019
import { interceptRequests } from './requestInterceptor/index';
import { cleanTabs } from './tabCleaner/index';

let extensionIsInitialized = false;

const startBackgroundProcess = () => {
  if (! extensionIsInitialized) {
    interceptRequests();
    cleanTabs();
    extensionIsInitialized = true;
  }
};

chrome.runtime.onStartup.addListener(startBackgroundProcess);
chrome.runtime.onInstalled.addListener(startBackgroundProcess);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...