Chrome扩展pagestatcher规则不工作



我有一个我写的扩展,已经使用了很长一段时间了,现在没有问题。我有一个带有css规则的pagestatcher来显示页面动作,最近它停止为用户工作了。我发现我可以卸载扩展并重新安装,大多数时候这解决了这个问题。什么会导致这种情况发生?

chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [
new chrome.declarativeContent.PageStateMatcher({

css: ["table[id='myclass']"]
})
],
actions: [new chrome.declarativeContent.ShowPageAction()]
}]);
});
});

如果你自己不调用removeRules,没有什么可以删除规则,所以它一定是Chrome中的错误或用户的配置文件目录损坏了。

您可以将id添加到规则中,并检查每次在该用户的配置文件中首次加载扩展时该规则是否存在。如果没有规则,重新添加。

chrome.runtime.onStartup.addListener(() => {
chrome.declarativeContent.onPageChanged.getRules(['foo'], rules => {
if (!rules[0]) addRules();
});
});
chrome.runtime.onInstalled.addListener(() => {
chrome.declarativeContent.onPageChanged.removeRules(addRules);
});
function addRules() {
chrome.declarativeContent.onPageChanged.addRules([{
id: 'foo',
conditions: [
new chrome.declarativeContent.PageStateMatcher({
css: ['table[id='myclass']'],
}),
],
actions: [new chrome.declarativeContent.ShowPageAction()],
}]);
}

最新更新