无法将事件侦听器添加到 webNavigation.onCompleted
Unable to add event listener to webNavigation.onCompleted
将下面的模拟函数与开发控制台一起使用:
此调用有效:
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() 返回的第一个项目,我将其用作返回真实数据的示例。
以上关于大写字母的注释是问题的原因。将所有内容都转换为小写解决了问题。
尽管如此,我并不清楚为什么这从一开始就是个问题。 (如果chromium源代码事件过滤器处理程序中有任何提示,请指出,我将不胜感激)。
将下面的模拟函数与开发控制台一起使用:
此调用有效:
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() 返回的第一个项目,我将其用作返回真实数据的示例。
以上关于大写字母的注释是问题的原因。将所有内容都转换为小写解决了问题。
尽管如此,我并不清楚为什么这从一开始就是个问题。 (如果chromium源代码事件过滤器处理程序中有任何提示,请指出,我将不胜感激)。