2016-05-05 3 views
0

Я работаю над расширением Chrome, где мне нужно получить значение из одной части расширения в другую. У меня есть фоновый скрипт, который выполняет оба сценария при нажатии на значок расширения. Один скрипт контента получает значение с веб-страницы и должен отправлять его во внешний скрипт. При нажатии на значок расширения он выполняет внешний скрипт, который прослушивает сообщение.Передача сообщения из одного сценария содержимого в другой

function message(){           
    console.log("Listening...");       
    var token = "";          

    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){ 
      console.log("Attempting to get message..."); 
      console.log(sender.tab ?      
      "from a content script:" + sender.tab.url : 
      "from the extension");      
    if (typeof request != 'undefined'){     
      console.log("Printing token...");   
      token = request.token;      

      console.log(token);       

      received = true;        
      sendResponse({greeting: "Got Token"});  
    }             
    });             
}               
message(); 

В сценарии содержимого, при нажатии на веб-странице щелкают он должен отправить сообщение на внешний сценарий. Вот код в скрипте содержимого.

chrome.runtime.sendMessage({token: token, URL: URL},function(response) { 
    console.log("Greeting 1"); 
    console.log(response.greeting);                                            
    });  

Когда я запускаю программу, я получаю «Listening» распечатанную из внешнего скрипта, и я получаю «Приветствие» 1 распечатанных из скрипта содержимого. Однако во внешнем скрипте слушатель, похоже, не работает. Я могу остановиться на нем и пройти через процесс, но он просто заканчивает пропустить блок внутри слушателя и просто заканчивается в конце функции, ничего не делая. Может ли кто-нибудь увидеть, что я могу делать неправильно?

+0

Где запущена функция 'message'? На странице фона? На всплывающей странице? – apsillers

ответ

0

Я думаю, вы немного смешаете вещи. Попробуйте этот код

chrome.runtime.sendMessage("SomeMessage"); //Content script 

Теперь послушайте это сообщение в своем background.js.

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){ alert (response)}); 

Он должен предупредить ваше сообщение. В этом случае «SomeMessage».

+0

Благодарим за отзыв. Я исправил другую проблему, которая делает эту проблему устаревшей. – Jared