Chrome webNavigation с перекрывающимися urlFilters срабатывает несколько раз - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть два разных обработчика, прослушивающих событие onCompleted. Если они совпадают / совпадают с одним и тем же URL-адресом и выполняются одновременно, он вызывает оба обработчика несколько раз.

Пример:

chrome.webNavigation.onCompleted.addListener(
    () => {
        console.log('aaa')
        // would run some custom logic here
    },
    { url: [{ urlContains: 'git' }] },
)
chrome.webNavigation.onCompleted.addListener(
    () => {
        console.log('bbb')
        // other custom logic
    },
    { url: [{ urlContains: 'hub' }] },
)

Приведенный выше журнал регистрирует переход к github.com:

aaa
bbb
aaa
bbb

Я бы ожидал, что он будет регистрировать каждый оператор один раз. Если перейти к URL-адресу, который просто соответствует первому фильтру прослушивателя (например, git-tower.com), он регистрирует его только один раз - так что, похоже, это происходит только в том случае, если оба запускаются.

Почему это имеет экспоненциальный характер (n ^ п) эффект?

1 Ответ

0 голосов
/ 14 апреля 2020

Сделать один слушатель для обоих фильтров

const urlFilters = [{urlContains: 'git'}, {urlContains: 'hub'}];
chrome.webNavigation.onCompleted.addListener(function(details) {
    if (details.frameId === 0) {
        console.log('aaa')
        // would run some custom logic here
    }else {
        //subframe navigation
    }
},{url: urlFilters})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...