Как передать информацию из Content_script на всплывающую страницу? (Расширения Chrome) - PullRequest
1 голос
/ 21 марта 2011

Я хотел бы передать сохраненную переменную из скрипта содержимого на всплывающую страницу, чтобы я мог просто вывести ее.Например, если мой скрипт содержимого имеет следующий код:

var x = 'abc';

, я бы хотел, чтобы заголовок всплывающего окна был такой переменной.

1 Ответ

2 голосов
/ 21 марта 2011

Пара способов сделать это, я использовал первый в своем расширении:

  1. localStorage. Используйте sendRequest({}), чтобы передать сообщение с вашей переменной на фоновую страницу, которая затем сохранит переменную в localStorage. Как только это будет сделано, ваше всплывающее окно может получить доступ к переменной, как localStorage["x"]. (Он должен проходить через фоновую страницу, потому что в настоящее время контентные сценарии не могут получить доступ localStorage)

  2. Простые запросы. Молитесь, чтобы всплывающее окно было открыто, и попробуйте отправить ему сообщение из скрипта содержимого с переменной в нем. Обратите внимание, что это не очень хорошее решение просто потому, что всплывающее окно может быть не открыто при попытке отправить ему переменную.

Пример кода для # 1:

//sendRequests look like this: sendRequest(message - Object, [callback - Function]);

//API Docs:
//onRequest Listener: http://code.google.com/chrome/extensions/extension.html#event-onRequest
//sendRequest Method: http://code.google.com/chrome/extensions/extension.html#method-sendRequest
//localStorage: http://www.html5rocks.com/features/storage

//From the Content Script
//Send request to background.html, no callback

chrome.extension.sendRequest({
    type: "popup_var", /* In my extensions, because I could often be different types of reqeusts, I use a type variable to identify them */
    my_variable: "Sally sold seashells by the seashore" /* Whatever variable you are trying to send */
});

//In background.html

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse){
        if(request.type == "popup_var"){
            /* The type of message has been identified as the variable for our popup, let's save it to localStorage */
            localStorage["popup_var"] = request.my_variable;
        }
    }
);

//In popup.html

console.log( "Variable from Content Script: "+localStorage["popup_var"] );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...