コンテンツ スクリプト通信に関する Chrome ドキュメントでwindow.postMessage
は、送信コード (ここでは Web ページ) で使用window.addEventListener("message", ...)
し、リッスン コード (ここではページに挿入された Chrome 拡張機能のコンテンツ スクリプト) で使用することを推奨しています。技術的には、どのような種類のカスタム DOM イベントでもこれを行うことができますが、postMessage
/message
には既に組み込みのサポートがあります。
ほぼそのままのコードからサンプル コードを持ち上げることができるはずです。
ネイティブ Web ページ:
// right after we get auth_token saved to a variable...
window.postMessage({ auth_token: auth_token }, "http://www.mypagedomain.com");
(http://www.mypagedomain.com
実際のプロトコル/ドメインに変更されていることを確認してください。)
contentscript.js (Chrome 拡張機能でリッスン)
window.addEventListener("message", function(event) {
// We only accept messages from ourselves
if (event.source != window) {
return;
}
console.log("auth_token received: " + event.data.auth_token);
}, false);
必要に応じて、イベント リスナー内から、メッセージ パッシングauth_token
を使用して をバックグラウンド ページに渡すことができます。
編集:
マニフェストには次のようなものを含める必要があります (run_at
ページが読み込まれる前にスクリプトを挿入するために以下を使用することに注意してください)。
...
"content_scripts": [
{
"matches": ["http://www.mypagedomain.com/*"],
"js": ["contentscript.js"],
"run_at": "document_start"
}
],
...