UPDATE
По Chrome 20 теперь вы можете использовать API для хранения .....
http://code.google.com/chrome/extensions/storage.html
Старый способ
Что я делаю, это создать iframe, который указывает на страницу в моем расширении, в которой есть скрипт, который получает нужные мне настройки из локального хранилища, а затем отправляет его своему родителю в сообщении, которое затем получает скрипт контента ..... хорошо, что было объяснением дерьма, код говорит, что это лучше;) .......
Content Script
// create the iframe for our page that sends the settings
var el = document.createElement("iframe");
el.setAttribute('src', chrome.extension.getURL("gimmeSettings.html"));
el.style.visibility="hidden";
document.body.appendChild(el);
// create the listner that listens for a message from our page that sends the settings
window.addEventListener("message", receiveSettings, false);
// function that gets called when we recieve a message from the page that sends the settings
function receiveSettings(event) {
//check to make sure the message came from our page
if (event.origin !== "chrome-extension://"+chrome.i18n.getMessage("@@extension_id")) return;
//message came from our extension, do stuff with it
console.debug(event.data);
// clean up
window.removeEventListener("message", receiveSettings, false);
el.parentNode.removeChild(el);
}
gimmeSettings.html-х JS
// post the message with our settings
parent.postMessage(localStorage.getItem("testing"), "*");
Options.html-х JS
localStorage.setItem("testing","bleh");
Manifest
{
"name": "Getting at an extensions local storage from a content script",
"description" : "Getting at an extensions local storage from a content script. Be aware that other pages/extensions can use this to get at your settings, but not change them...so dont include sensitvie data.",
"content_scripts": [
{
"matches": ["<all_urls>"],
"js" : ["myscript.js"],
"run_at":"document_idle"
}
],
"permissions": [
"tabs", "<all_urls>"
],
"manifest_version": 2,
"web_accessible_resources": [
"gimmeSettings.html"
],
"options_page": "options.html",
"version":"1.0"
}
Некоторые вещи отметить ....
Другие страницы и расширения могут легко использовать это, чтобы также получить настройки из вашего расширения, поэтому не использовать какие-либо конфиденциальные данные с помощью этого метода.
Из лучших я могу сказать, что им не удастся изменить ваши настройки через эту страницу tho, если кто-то знает разные, объясните.
Я использую манифест версии 2 и установил доступ к странице gimmeSettings. Если вы не знаете отличия, выраженную в версии 2, добавьте, что вам действительно стоит ее прочитать .... http://code.google.com/chrome/extensions/trunk/manifestVersion.html
И если вы хотите, чтобы рабочий пример, то идите сюда .....
http://forum.valorsolo.com/viewtopic.php?f=36&t=375
Спасибо, это отличная новость. Кроме того, я просто подумал, что его можно было бы обернуть в библиотеку (что я сделаю, если мне удастся найти ее для использования до того, как разработчики Chrome сделают более красивый API). На самом деле этот ответ заставляет меня хотеть сделать расширение с помощью страницы параметров только ради этого :) Поздравляю. –
О, и у меня была идея: возможно, чувствительные настройки могут быть отправлены с использованием некоторой [асимметричной надписи] (http://www.hanewin.net/encrypt/) (ссылка не реализует дешифрование, но является отправной точкой). Однако, похоже, это чертовски много хакеров. Но звучит весело! У нас должно быть больше часов в день, чтобы делать такие вещи. –