我正在尝试使用可选权限动态获得对某些站点(例如 amazon.fr)的权限,一旦获得权限,我将使用声明性内容 API 的 RequestContentScript函数将一些 JS 注入到我请求权限的站点中。
在我关闭浏览器或关闭最初注入脚本的所有页面之前,所有这些都是第一次正常工作。但是页面注入后 JS 并没有注入那些站点。当我检查扩展程序的权限和站点时,我看到我请求的所有权限仍然通过获取权限 API 存在。
我用来请求权限和注入脚本的后台js代码如下
const conditions = [];
chrome.permissions.request({
permissions: ['declarativeContent'],
origins:['https://www.amazon.fr/'],
}, (granted) => {
console.log({ granted });
if (granted) {
conditions.push(new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostEquals: 'www.amazon.fr', schemes: ['https'] },
css: ['div'],
}));
const rule2 = {
conditions,
actions: [
new chrome.declarativeContent.RequestContentScript({
js: ['page_injects/index.js'],
css: ['page_injects/index.css'] })],
};
chrome.declarativeContent.onPageChanged.removeRules(undefined,() => {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
console.log('chrome.declarativeContent.onPageChanged.addRules done');
}
});
由于这是第一次工作,我不确定第二次及之后出现相同行为会出现什么问题。
有关如何进行此操作的任何提示?
我使用这个SO question 来选择注入脚本。