onRequest.addListener と sendRequest は、Chrome の拡張メッセージングの一部です。ここにありますhttp://developer.chrome.com/extensions/messaging.html
基本的に、誰かが「sendRequest」をトリガーして送信した「onRequest.addListener」を使用してリクエストをリッスンします。
あなたの場合、コンテンツスクリプトに「onRequest.addListener」を配置して、ポップアップからのリクエストをリッスンします(sendRequestを使用)。また、コンテンツ スクリプトからポップアップに応答を返して、何が起きているかを処理することができます。ポップアップでは、 chrome.extension.getBackgroundPage()を使用して背景ページに直接アクセスできます。
コンテンツ スクリプトがバックグラウンド ページにも通信するようにする場合 (これは、作業が複雑になるため必要ありません)、コンテンツ スクリプトからのリクエストのみをリッスンする「onRequest.addListener」をバックグラウンド ページに追加できます。 . そのために、Message Passingはそれを完璧に説明しています。true の場合、「sender.tab」はコンテンツ スクリプトです。
以下の例 (未テスト) は、メッセージ パッシングについて私が何を意味するかを示しています。物事を複雑にするのではなく、シンプルに保つようにしてください。
例
Popup.html
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {method: "fromPopup", tabid: tab.id}, function(response) {
console.log(response.data);
});
});
ContentScript.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "fromPopup") {
// Send JSON data back to Popup.
sendResponse({data: "from Content Script to Popup"});
// Send JSON data to background page.
chrome.extension.sendRequest({method: "fromContentScript"}, function(response) {
console.log(response.data);
});
} else {
sendResponse({}); // snub them.
}
});
BackgroundPage.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
// From content script.
if (sender.tab) {
if (request.method == "fromContentScript")
sendResponse({data: "Response from Background Page"});
else
sendResponse({}); // snub them.
}
});