将消息从background.js传递给popup.js [英] Passing message from background.js to popup.js
问题描述
我试图实现我自己的Chrome扩展,在这个扩展上,在某个事件中,创建浏览器通知并使用background.js中计算的数据填充弹出窗口。
I'm trying to implement my own chrome extension on which, on a certain event, create a browser notification and fills the popup with data calculated in background.js
Here is mymanifest file :
{
"name": "Dummy name",
"description": "Description",
"manifest_version": 2,
"version": "1.1.3",
"icons": {
"16": "icon_16.png",
"48": "icon_48.png",
"128": "icon_128.png",
"256": "icon_256.png"
},
"browser_action": {
"default_icon": "icon_48.png",
"default_title": "Test",
"default_popup": "popup.html"
},
"permissions": ["background","webRequest","webRequestBlocking","webNavigation","tabs","notifications"],
"background": {
"scripts":["jquery-1.8.1.min.js","classy.js","background.js"]
}
}
我对sendMessage的调用在background.js中
My call to sendMessage in background.js
show : function(result) {
var that = this;
chrome.extension.sendMessage({greeting: "hello"}, function(response) {
console.log(response);
});
if(window.webkitNotifications) {
var notification = webkitNotifications.createHTMLNotification('notification.html');
notification.show();
setTimeout(function(){
notification.cancel();
}, '7000');
}
}
popup.js中的消息侦听器(来自chrome扩展样本)
My message listener in popup.js (from chrome extension samples)
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
我得到的唯一错误是
The only error I get is a
端口错误:无法建立连接。接收结束时不存在
。
Port error: Could not establish connection. Receiving end does not exist.
感谢您的帮助!
推荐答案
Popup没有选项卡ID,因此您将收到错误消息。
Popup doesn't have tab id so you will get the error.
您可以使用 chrome.runtime.sendMessage
和 chrome.runtime.onMessage.addListener
。
所以在 background.js中
So in background.js
chrome.runtime.sendMessage({
msg: "something_completed",
data: {
subject: "Loading",
content: "Just completed!"
}
});
并在 popup.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.msg === "something_completed") {
// To do something
console.log(request.data.subject)
console.log(request.data.content)
}
}
);
我希望这会对您有所帮助。
I hope it would be helpful to you.
谢谢,
Alex
Thanks, Alex
这篇关于将消息从background.js传递给popup.js的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!