使用下面的模拟功能和开发控制台:
此调用将起作用:
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() 返回的第一项,我将其用作返回真实数据的示例。
答案 0 :(得分:0)
上述对大写字母的评论是问题的原因。将所有内容转换为小写解决了问题。
虽然,我不清楚为什么这会成为一个问题。 (如果在 Chromium 源代码事件过滤器处理程序中有任何提示,如果能指出,我将不胜感激)。