关于内容脚本通信的 Chrome 文档建议window.postMessage
在发送代码(此处为网页)和window.addEventListener("message", ...)
侦听代码(此处为 Chrome 扩展程序的内容脚本,注入页面)中使用。从技术上讲,任何类型的自定义 DOM 事件也可以做到这一点,但postMessage
/message
已经有内置支持。
您应该能够几乎逐字逐句地从代码中提取示例代码:
原生网页:
// 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"
}
],
...