【发布时间】:2015-10-29 15:37:48
【问题描述】:
我需要在扩展中实现消息传递。从 background.js 中的 content_script`a 中寻找了一种使用 window.postMessage() 和 window.addEventListener() 交换文档的方法,但消息没有发送。通过 content_script 我在 head 中加载了 js 代码。 这是 background.js 的代码:
window.addEventListener ("message", function (event) {
// We only accept messages from ourselves
if (event.source! = window)
return;
if (event.data.type && (event.data.type == "FROM_PAGE")) {
console.log ("Content script received:" + event.data.text);
port.postMessage (event.data.text);
}
}, False);
这在 content_script.js 中:
var s = document.createElement ('script');
s.src = chrome.extension.getURL ('inject.js');
(Document.head || document.documentElement) .appendChild (s);
s.onload = function () {
s.parentNode.removeChild (s);
};
inject.js 中的这个:
window.postMessage ({type: "FROM_PAGE", text: "Hello from the webpage!"}, "*");
我做错了什么?
【问题讨论】:
-
window后台页面中的对象引用自身,而不是当前查看的页面。至于你做错了什么 - 一切。你读过the documentation 并检查过the official sample extensions吗?
标签: javascript google-chrome-extension