【发布时间】:2013-01-10 22:47:56
【问题描述】:
我对什么算作 chrome 扩展视图感到很困惑,它直接与我可以用来在不同组件之间传递消息的函数相关联。
让我先描述一下我想做什么;
我的 background.html 根据通过 socket.io 从 node.js 服务器接收到的一些事件创建桌面通知。
当用户点击通知时,我想在我的扩展 (/src/view/token.html) 中创建一个指向 html 的新选项卡,然后从 background.js(我的套接字.io 代码)到新选项卡。我想通过消息传递来做到这一点。
所以,基本上,我在做
var notification = webkitNotifications.createNotification(image, title, content);
notification.onclick(function(e){
chrome.tabs.create({url: "/src/view/tokens.html"}, function(tab){
//just to make sure the tab is activated..
chrome.tabs.onUpdated.addListener(function(tabId){
if(tabId == tab.id) {
chrome.tabs.sendMessage({data: whatever_data}, tabId);
}
});
});
});
现在我的问题出在我的 tokens.js(在 tokens.html 中加载),我尝试使用以下命令收听消息:
chrome.extension.onMessage.addListener(function (msg, _, sendResponse) {
console.log(msg);
});
但我收到“未捕获的类型错误:无法读取未定义的属性 'onMessage':,所以我假设我无权访问 tokens.html 中的 chrome.extension ???
我用弹出页面(浏览器操作弹出)和选项页面尝试了这个,它们都工作得很好。所以,我猜我创建的视图不是 chrome 扩展页面?
现在我很困惑... 1) 什么被认为是可以访问 chrome.* API 的 chrome 扩展页面 2)我应该如何实现我想做的事情?
谢谢!
【问题讨论】:
标签: google-chrome-extension message-passing