/* My Background */
console.log("Init BackGround ! ");
chrome.runtime.onMessageExternal.addListener(
(request, sender, sendResponse) => {
console.log("J'ai bien reçu un truc");
console.log(request);
console.log(sender);
}
);
// Inject script
chrome.webNavigation.onCompleted.addListener((details) => {
chrome.tabs.executeScript(details.tabId, {
file: "include/ts/injectScript.js",
runAt: "document_end"
});
}, {url: [{urlPrefix: "https://website.com"}]});
console.log("End Background init");
/* My injected script */
var extensionID = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
chrome.runtime.sendMessage(extensionID, {test : 123},(response) => {
console.log(response);
});
/* One part of my manifest.json (with good url) */
"externally_connectable": {
"matches": [
"*://*.exemple.com/tests/*"
]
},
"permissions": [..., "*://*.exemple.com/tests/*",...]
バックグラウンドは、ページ読み込み時に自動的にJSスクリプトを挿入します。Chromeのメッセージ拡張子:挿入されたスクリプトから背景へ
コンソール(現在のページ)で実行されたすべてのテストが機能し、バックグラウンドがメッセージを受信しています。
残念ながら、背景はページをロードするスクリプトをよく注入しますが、メッセージは受信されません。
私の英語のため申し訳ありません、 は、あなたの答えのために事前にありがとうござい
ジェレミー-F
自分の内線内で通信する場合は、 'extensionID'と' externally_connectable'は必要ありません。質問に関連する詳細がないか、コードが不必要に複雑すぎるかのいずれかです。 – wOxxOm
@wOxxOm私の実験では、Webページのコンテキストにスクリプトを直接注入し、その挿入されたスクリプトからメッセージを送信しようとすると、sendMessageの呼び出しが拡張機能のコンテキストになくなったため、extensionIdを指定するというエラーが発生しました。 –