#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 есть какие-либо подсказки, я был бы признателен, если бы на это можно было указать).