chrome.extension APIを使用してください。
要求を前後に送信したり、連続した通信にポートを使用することもできます。
この例では、ポップアップを開いたときに接続するポップアップとバックグラウンドのページ間に双方向通信を作成します。
バックグラウンドページとポップアップページの両方に含まれるsocket.jsファイルを作成するだけです。そして、それぞれの上に、あなただけの宣言できます
new Socket();
をここsocket.jsの実装です:
var Socket = function() {
window.socket = this;
this.port = chrome.extension.connect({name:"popupToBackground"});
chrome.extension.onConnect.addListener(function(port) {
if(port.name == "backgroundToPopup") {}
else if(port.name == "popupToBackground") {
window.socket.port = chrome.extension.connect({name:"backgroundToPopup"});
}
else {
return;
}
port.onMessage.addListener(function(msg) {
try {
window[msg.namespace][msg.literal][msg.method].apply(this, msg.args);
}
catch(error) {
// your failed action goes here.
}
});
});
};
はあなたのためのメッセージ・リスナーの作業でジェネリックメソッドの呼び出しを行うことを確認してください。私は上記のフォーマットが好きです。非常に堅牢です。ただソケットにそれらを投稿する前後にメッセージを送信するには:これは、ポップアップページから実行された場合
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
});
それでは背景ページは呼び出します。
window.myNamespace.myLiteral.myMethod(argOne, argTwo);
を私に、これは非常にいいです再利用可能なjavascriptオブジェクト。あなたが好きならばあなたも、特定のプロトタイプの機能を追加することができます - このようにその送信も簡単メッセージ:
Socket.prototype = {
sendOneTwo: function() {
socket.post({ namespace: "myNamespace",
literal: "myLiteral",
method: "myMethod",
args: ["argOne", "argTwo"]
});
};
今、あなたが言っているすべては次のとおりです。
socket.sendOneTwo();
関連:[バックグラウンド・コンテキストでスクリプト(バックグラウンドスクリプトは、ブラウザアクション、ページアクション、オプションページ、など)間の通信します] (//stackoverflow.com/q/41420528) – Makyen
[chrome拡張子のpopup.jsとbackground.jsの通信方法](https://stackoverflow.com/questions/13546778/how-to-communicate) -pop-up-js-and-background-js-in-chrome-extension) – JerryGoyal