Не удалось добавить прослушиватель событий в webNavigation.завершено

#google-chrome-extension

Вопрос:

Использование функции макета ниже вместе с консолью разработчика:

Этот звонок сработает:

 chrome.webNavigation.onCompleted.addListener(processWebNavChange, filtera);
 

но когда я на самом деле передаю свой реальный var filter , он выдает эту ошибку:
Uncaught TypeError: Could not add listener

Мои фактические данные выглядят так:

 {
    url: [ {hostContains: ".im88rmbOwZ"} ]
}
 
 function registerWebNavListener() {
    var matchers = getUrlMatchers();
    var filter = {
        url: matchers
    };
    // test with mock data filtera that actually works
    const filtera = {
      url:
      [
        {hostContains: "example.com"},
      ]
    }
    if (matchers.length > 0) {
        chrome.webNavigation.onCompleted.addListener(processWebNavChange, filtera);
    }
}

async function processWebNavChange(data) {
}
 

Есть ли что-то неправильное в моей структуре данных, которую я на самом деле использую? Я не верю, что объект фильтра, который я вернул, неверен
}

ИЗМЕНИТЬ: Я добавил новый

 const filterb = {
        url: [ {hostContains: ".im88rmbOwZ"} ]
    };
 

и это все еще терпит неудачу. Единственная запись {hostContains: ".im88rmbOwZ"} была первым элементом , возвращенным из getURLMatchers (), который я использовал в качестве примера возвращаемых реальных данных.

Комментарии:

1. Судя по " вашим реальным данным, они уже структурированы, что является ошибкой, обычно вызванной использованием stringify с chrome.storage или SendMessage. Установите точку останова в devtools и фактически проверьте данные в отладчике, а не в консоли.

2. Извините, я должен был удалить эту часть сообщения: Реальные данные здесь в соответствии с отладчиком: { url: [ {hostContains: «.im88rmbOwZ»} ] }

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

4. Я попробовал это с моими реальными данными, создав макет структуры с «{ url: [ {hostContains: «.im88rmbOwZ»}]}», и это также не удается.

5. Проблема вызвана заглавными буквами O и Z .

Ответ №1:

Вышеприведенный комментарий к заглавным буквам был причиной проблемы. Преобразование всего в нижний регистр решило проблему.

Хотя мне не совсем понятно, почему это было проблемой с самого начала. (Если в обработчиках фильтров событий исходного кода chromium есть какие-либо подсказки, я был бы признателен, если бы на это можно было указать).