Javascript window.postMessage从web\u可访问\u资源到内容脚本
我试图将一条来自网络可访问资源的消息发布到我的chrome扩展的内容脚本中 我的设置: 部分清单。json:Javascript window.postMessage从web\u可访问\u资源到内容脚本,javascript,google-chrome-extension,postmessage,Javascript,Google Chrome Extension,Postmessage,我试图将一条来自网络可访问资源的消息发布到我的chrome扩展的内容脚本中 我的设置: 部分清单。json: "content_scripts": [{ "matches": ["http://*/*"], "js": ["content.js"] }], "web_accessible_resources": ["run.js"] content.js // this listener is never triggered ;-( chrome.extension.onMessage
"content_scripts": [{
"matches": ["http://*/*"],
"js": ["content.js"]
}],
"web_accessible_resources": ["run.js"]
content.js
// this listener is never triggered ;-(
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.type === 'foo') {
// do whatever i want if request.type is foo
}
});
window.postMessage({type: 'foo'}, '*');
run.js
// this listener is never triggered ;-(
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.type === 'foo') {
// do whatever i want if request.type is foo
}
});
window.postMessage({type: 'foo'}, '*');
我也尝试过一些有效的方法:
直接在run.js中添加侦听器:
从后台脚本发布消息:
问题:
我该怎么办?我是否需要为我的内容脚本设置一些授权或其他内容,或者为什么这不起作用?就在我问我的问题时,我有一个想法,当然 。。。成功了 当然,我需要在我的content.js中附加window.addEventListener:
window.addEventListener("message", function(e) {
if (e.data.type === 'closeSidebar') {
// that works now
}
});
现在,您可以启用api将消息直接从网页发送到扩展id 在清单中启用
"externally_connectable": {
"matches": ["*://*.example.com/*"]
}
从网页发送消息:
chrome.runtime.sendMessage(editorExtensionId, {openUrlInEditor: url},
function(response) {
if (!response.success)
handleError(url);
});
分机接收:
chrome.runtime.onMessageExternal.addListener(function(){});
请参阅:这个问题和答案已经有三年的历史了。事情可能已经改变了,但谢谢你的否决票。。。