オプションのアクセス許可を使用して特定のサイト (例: 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');
}
});
これは初めて機能するため、2回目以降に同じ動作をする際に何が問題になるのかわかりません。
これを進める方法に関するヒントはありますか?
このSO の質問を使用して、オプションでスクリプトを挿入することにしました。