私は基本的にlocalStorage
、バックグラウンド スクリプトのオブジェクトを使用して、Chrome 拡張機能用の永続的なストレージを取得しようとしています。
セットアップは次のとおりです。
バックグラウンド スクリプトとコンテンツ スクリプトが 1 つずつあります。コンテンツ スクリプトは、拡張機能の .xml からデータを取得/設定する必要がありますlocalStorage
。
ただし、バックグラウンド スクリプトに送信するメッセージを取得できません。
バックグラウンド スクリプトのコードは次のとおりです。
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")
sendResponse({farewell: "goodbye"});
});
そしてコンテンツスクリプト:
setTimeout(function () {
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
}, 5000);
理想的には、バックグラウンド スクリプトが出力from a content script: [some url]
し、コンテンツ スクリプトが出力する必要がありますgoodbye
。代わりに、次のエラーが表示されます。
Port: Could not establish connection. Receiving end does not exist.
どんな助け/提案も大歓迎です!
ありがとう :)
編集:マニフェスト
{
"manifest_version": 2,
"name": "Helios",
"description": "Helios chrome extension.",
"version": "0.0.1",
"permissions": [
"https://secure.flickr.com/",
"storage"
],
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": {
"19": "img/icon-19.png",
"38": "img/icon-38.png"
},
"default_title": "Helios",
"default_popup": "popup.html"
},
"content_scripts":[
{
"matches": ["*://*/*"],
"css": ["css/main.css"],
"js": [
"js/vendor/jquery-1.9.1.js",
"js/vendor/handlebars-1.0.0-rc.4.js",
"js/vendor/ember-1.0.0-rc.7.js",
"js/vendor/d3.v3.js",
"js/vendor/socket.io.min.js",
"js/templates.js",
"js/main.js"
],
"run_at": "document_end"
}
],
"web_accessible_resources": [
"img/**",
"fonts/**"
]
}
編集:Chromeバージョン
Google Chrome 29.0.1547.65 (Official Build 220622)
OS Mac OS X
Blink 537.36 (@156661)
JavaScript V8 3.19.18.19
Flash 11.8.800.170
User Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36