私のデモ拡張機能は次のとおりです
ファイルと役割
a) manifest.json (ドキュメント)
b) myscript.js (コンテンツ スクリプトはドキュメントを参照)
c) background.js (背景 HTML ファイルドキュメントを参照)
d) popup.html (ブラウザ アクション ポップアップドキュメントを参照)
e) popup.js (背景ページから変更された値の受容体)
マニフェスト.json
すべてのファイルを権限付きでマニフェスト (Viz 背景、ポップアップ、コンテンツ スクリプト) に登録しました
{
"name":"Communication Demo",
"description":"This demonstrates modes of communication",
"manifest_version":2,
"version":"1",
"permissions":["<all_urls>"],
"background":{
"scripts":["background.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js"]
}
],
"browser_action":{
"default_icon":"screen.png",
"default_popup":"popup.html"
}
}
myscript.js
バックグラウンド ページとの通信にsendMessage() APIを使用
var d = document.domain;
chrome.extension.sendMessage({
dom: d
});
background.js
onMessage()およびonConnect()リスナーを使用して、Content および popup.js のイベント リスナーを追加しました。
var modifiedDom;
chrome.extension.onMessage.addListener(function (request) {
modifiedDom = request.dom + "Trivial Info Appending";
});
chrome.extension.onConnect.addListener(function (port) {
port.onMessage.addListener(function (message) {
if (message == "Request Modified Value") {
port.postMessage(modifiedDom);
}
});
});
popup.html
インライン スクリプトを回避するために popup.js を登録するサンプル ブラウザー アクション HTML ページ
<!doctype html>
<html>
<head>
<script src="popup.js"></script>
</head>
<body></body>
</html>
popup.js
結果を取得するためのバックグラウンド ページとの通信にPort\Long Lived Connectionを使用
var port = chrome.extension.connect({
name: "Sample Communication"
});
port.postMessage("Request Modified Value");
port.onMessage.addListener(function (msg) {
console.log("Modified Value recieved is " + msg);
});
これがお役に立てば幸いです。さらに情報が必要な場合はお知らせください