さまざまなコンポーネント間でメッセージを渡すために使用できる関数に直接リンクされている、クロム拡張ビューとしてカウントされるものについて、かなり混乱しています。
私が最初にやろうとしていることを説明させてください。
私の background.html は、socket.io を介して node.js サーバーから受信したいくつかのイベントに基づいて、デスクトップ通知を作成します。
ユーザーが通知をクリックしたときに、拡張機能 (/src/view/token.html) 内の html を指す新しいタブを作成し、background.js (socket.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);
});
しかし、「Uncaught TypeError: Cannot read property 'onMessage' of undefined:」が表示されるので、tokens.html の chrome.extension にアクセスできないと思いますか???
ポップアップ ページ (ブラウザ アクション ポップアップ) とオプション ページでこれを試したところ、すべて問題なく動作しました。だから、私が作成したビューはクロム拡張ページではないと思いますか?
今、私は混乱しています... 1) chrome.* API にアクセスできる chrome 拡張ページとは何ですか?
ありがとう!