2014-09-01 2 views
1

В моем background.js у него был загружен ajax, когда URL-адрес сопоставлен во время загрузки. Например, это google.com, и он запускает ajax и получает некоторые данные. Но как отправить эти данные в мой popup.html?отправить данные из background.js в popup.html

Я пробовал chrome.runtime.sendMessage, но я не понимаю. Параметр отправляет в какой файл?

Я смущен.

ответ

2

при отправке данных через chrome.runtime.sendMessage, вы сможете получить его в своем всплывающем меню, прослушивая onMessage событий.

при отправке сообщения из background.js, как это,

chrome.runtime.sendMessage({msg: 'hello there'}); 

вы можете получить его в файле JS нагруженной popup.html:

chrome.extension.onMessage.addListener(function(message, messageSender, sendResponse) { 
    // message is the message you sent, probably an object 
    // messageSender is an object that contains info about the context that sent the message 
    // sendResponse is a function to run when you have a response 
}); 

См here и here

+0

эй спасибо за ответ. Я пробовал, но это не сработало. Я помещаю этот chrome.runtime.sendMessage ({greeting: "hello"}) в мой bg.js и этот chrome.runtime.onMessage.addListener ( function (request, sender, sendResponse) { if (request.greeting = = «привет») предупреждение ('да'); }); в popup.html (я использую include на самом деле), но ничего не произошло, когда я щелкнул всплывающее окно. – Adam91

+0

, вероятно, потому, что, когда вы отправляете сообщение из фона, ваше всплывающее окно близко, поэтому никто не ловит сообщение. Когда вы открываете всплывающее окно, оно прослушивается, но сообщение уже отправлено. Но вы можете сделать это наоборот. Оба сценария всплывающих окон и фона могут отправлять и прослушивать сообщения одинаково. Когда вы открываете всплывающее окно, отправьте сообщение на задний план и в фоновом режиме, послушайте это сообщение и отправьте сообщение, когда вы его получите. На этот раз ваше всплывающее окно должно поймать сообщение. – keune

+0

, потому что я не хочу никакой задержки, когда пользователь видит всплывающее окно. Если я сделаю обратный путь, это задержит? потому что в моем bg.js я делаю ajax-вызов. – Adam91

0

Можете ли вы изменить свой вопрос, чтобы включить свой манифест. Json? Это часто очень полезно при внесении предложений.

Предполагая, что ваш popup.html является частью сценария контента, вам необходимо использовать для отправки сообщений с фоновой страницы на контентные скрипты.

Также рассмотрите возможность использования chromeps для распространения сообщений в стиле pubsub по всему вашему расширению без необходимости беспокоиться о том, когда следует использовать chrome.runtime против chrome.tabs.

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