无法将消息从后台页面发送到 Chrome 分机的内容脚本
Can't send a message from background page to content script at Chrome Extension
我的背景页面上有这个:
function go(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
}
go();
这是我的内容脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
alert(request.greeting);
});
我希望在启用应用程序时启动警报,但什么也没发生。我错过了什么吗?
编辑:manifest.json:
{
"manifest_version": 2,
"name": "Naming",
"description": "any",
"version": "1.0",
"permissions": [
"tabs",
"activeTab",
"https://google.com.br/"
],
"background": {"scripts":["background.js"]},
"content_scripts": [
{
"js": ["CLAWS_Content_Script.js", "jquery.js"],
"css": ["CLAWS_Content_Script_CSS.css"],
"matches": ["<all_urls>"]
}
],
"web_accessible_resources": [
"CLAWS_Sem_Imagens.html",
"icone_XVermelho.png"
]
}
内容脚本已加载,因为它提供的其他功能运行良好。控制台没有错误。
消息在浏览器启动或扩展程序启用时发送,但此时没有活动内容脚本可以接收它。同样,当您重新加载网页时,您的后台页面不会重新加载,因此不会发送任何消息,因此也不会收到任何消息。
如果您确实需要 the alert to launch as I enable the extension
,则通过 chrome.tabs.executeScript 手动注入内容脚本,在这种情况下您不需要 manifest.json 中的 "content_scripts"
部分。
我的背景页面上有这个:
function go(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
}
go();
这是我的内容脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
alert(request.greeting);
});
我希望在启用应用程序时启动警报,但什么也没发生。我错过了什么吗?
编辑:manifest.json:
{
"manifest_version": 2,
"name": "Naming",
"description": "any",
"version": "1.0",
"permissions": [
"tabs",
"activeTab",
"https://google.com.br/"
],
"background": {"scripts":["background.js"]},
"content_scripts": [
{
"js": ["CLAWS_Content_Script.js", "jquery.js"],
"css": ["CLAWS_Content_Script_CSS.css"],
"matches": ["<all_urls>"]
}
],
"web_accessible_resources": [
"CLAWS_Sem_Imagens.html",
"icone_XVermelho.png"
]
}
内容脚本已加载,因为它提供的其他功能运行良好。控制台没有错误。
消息在浏览器启动或扩展程序启用时发送,但此时没有活动内容脚本可以接收它。同样,当您重新加载网页时,您的后台页面不会重新加载,因此不会发送任何消息,因此也不会收到任何消息。
如果您确实需要 the alert to launch as I enable the extension
,则通过 chrome.tabs.executeScript 手动注入内容脚本,在这种情况下您不需要 manifest.json 中的 "content_scripts"
部分。