我知道它已经在这里好几千次,但我现在被困住了。我已经阅读了大量的答案并研究了code.google.com但没有成功。我正在尝试从background.html
到contentscript.js
的Chrome扩展程序中发送请求。我设法让它以另一种方式工作。
background.html
内的代码:
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
contentscript.js
内的代码:
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
else
sendResponse({farewell: "nope"});
});
manifest.json
应该没问题,因为沟通正在倒退,其他任何事情都能正常运作。谢谢!
答案 0 :(得分:0)
您的代码很好,您的触发器一定有问题。我使用你的代码创建了一个简单的扩展,它工作正常。将这两位添加到背景和内容中。然后在任何页面上选择rmb并选择“发送消息”。你应该收到警报。
Background.html
var menuid = chrome.contextMenus.create({"title":"Send Message", "onclick": SendMessage, "documentUrlPatterns":["http://*/*"]});
function SendMessage() {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
}
contentscript
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.greeting == "hello") {
alert('hello');
sendResponse({farewell: "goodbye"});
}
else
{
alert('goodbye');
sendResponse({farewell: "nope"});
}
});