0

Я отправил запрос из моего сценария контента и получил ответ с моей фоновой страницы. Теперь я хочу установить переменную в своем сценарии содержимого - на основе ответа. Вот где у меня проблемы. Должно быть достаточно просто ... Думаю, я должен ошибаться в синтаксисе. Вот что в моем сценарии содержания:Установить переменную в сценарии содержимого в соответствии с сообщением, переданным с страницы BG - расширение chrome

chrome.extension.sendRequest({greeting: "hello"}, function(response) { 
    console.log(response.farewell); 
if (response.farewell == "goodbye") { 
     wasPolite = "yes"; 
} 
else if (response.farewell == "goaway") { 
     wasPolite = "no"; 
    } 
else { 
wasPolite = "maybe"; 
} 
}); 
alert(wasPolite); 

Консоль показывает goaway как ответ, но wasPoite остается неопределенным.

+0

Где вы тестируете значение wasPolite? Я предполагаю, что это проблема с охватом. Не могли бы вы разместить немного больше кода, показывающего область переменной wasPolite и где она определена и впоследствии протестирована? –

+0

Он определен здесь в коде выше, как глобальная переменная на странице, где этот скрипт вводится, и все. Он тестируется на следующей строке, следующей за приведенным выше кодом. Я пытался «оповещать (wasPolite)», но не кубик ... –

+2

Если вы определяете var wasPolite = ''; перед chrome.extension .... и он все равно не предупреждает о правильном значении, тогда я бы спросил, является ли функция chrome.extend.sendRequest() асинхронной? Если это так, вы можете предупредить wasPolite, прежде чем запрос успеет обратный вызов. @Ruup, вероятно, находится на пути, предполагая, что wasPolite будет иметь свою ценность только после того, как sendRequest фактически закончит, тем самым активировав обратный вызов. –

ответ

2

Если вы определяете:

var wasPolite = ''; 

Перед тем:

chrome.extension.... 

и это еще не предупреждая правильное значение, то я бы спросить это chrome.extension.sendRequest() функция асинхронный? Если это так, вы можете предупредить wasPolite, прежде чем запрос успеет обратный вызов. @Ruup, вероятно, находится на пути, предполагая, что wasPolite будет иметь свою ценность только после того, как sendRequest действительно закончил, тем самым вызвав обратный вызов

Смежные вопросы