HTML5 Local Storage, как передать переменные? - PullRequest
1 голос
/ 05 апреля 2011

Хорошо, вот моя проблема. Я пишу расширение для Chrome, оно почти готово, но проблема, например:

[Page popup.html]

localStorage["code"] = "alert('Hello!');";

[Filejection.js; который будет вызываться каждый раз при загрузке страницы, я думаю, что скрипт содержания]

localStorage["code"] = (localStorage["code"] != undefined) ? localStorage["code"] : "alert('Default!');";
eval(localStorage["code"]);

Я испробовал 2 метода, во-первых, НЕ ОТКРЫТЬ POP UP, чтобы на каждой загруженной мной странице запускалось оповещение о команде («По умолчанию!»); и это работает. Затем я сначала попытался загрузить всплывающее окно и понял, что переменная localStorage["code"] теперь соответствует загружаемой странице, а не моему расширению. В кратком объяснении, в моем расширении, localStorage["code"] == "alert('Hello');";, но в http://google.com localStorage["code"] == ""; или в http://facebook.com localStorage["code"] == "";.

У меня вопрос, есть ли способ сохранить localStorage ["code"] из popup.html, к которому может иметь доступ инъекция. Js?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Три представляют собой 2 вида локальных хранилищ - одно принадлежит самому расширению (доступ к нему можно получить только с фоновой страницы, всплывающей страницы или любой страницы, включенной в пакет расширений), другое относится к сайту (можно получить доступ только сконтент сценария).

Таким образом, если вам нужно получить доступ к значению локального хранилища, которое было задано во всплывающем окне из скрипта контента, вам нужно отправить запрос на фоновую страницу, прочитать значение там и отправить его обратно в скрипт контента.,Как это сделать, описано в Передача сообщений Документ.

1 голос
/ 05 апреля 2011

Проверьте это:

Content-Script:

chrome.extension.sendRequest({ action : "getCode" }, function(response) {
    alert(response.getCode);
}); 

Фоновая страница:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) 
{   
    case "getCode":
        sendResponse({ getCode: localStorage['code'] });
    break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...