Расширение google chrome:: console.log() со справочной страницы?

Если я вызываю console.log('something'); со всплывающей страницы или любой script включен, что он отлично работает.

Однако, поскольку фоновая страница не запускается непосредственно со всплывающей страницы, она не включена в консоль.

Есть ли способ, по которому я могу получить console.log() на странице фона, чтобы отобразиться в консоли для всплывающей страницы?

есть ли какой-либо способ, с фоновой страницы вызывать функцию на всплывающей странице?

Ответ 1

Любая страница расширения (кроме сценариев контента) имеет прямой доступ к фоновой странице через chrome.extension.getBackgroundPage().

Это означает, что во всплывающей странице вы можете просто:

chrome.extension.getBackgroundPage().console.log('foo');

Чтобы упростить использование:

var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');

Теперь, если вы хотите сделать то же самое в сценариях контента, вы должны использовать Передача сообщений для достижения этого. Причина, они оба принадлежат к разным доменам, что имеет смысл. На странице Message Passing можно найти несколько примеров.

Надеюсь, что очистит все.

Ответ 2

Бросьте очевидный ответ здесь на всякий случай. Вы знаете, что вы можете открыть фоновая консоль страницы, если вы нажмете ссылку "background.html" в списке расширений, правильно?

Изменить

Для доступа к фоновой странице, соответствующей вашим расширениям, откройте Settings / Extensions или откройте новую вкладку и введите chrome://extensions. Вы увидите что-то вроде этого скриншота.

Chrome extensions dialogue

Под расширением нажмите ссылку background page. Это открывает новое окно. Для контекстного меню у окна есть заголовок: _generated_background_page.html.

Ответ 3

Чтобы ответить на ваш вопрос напрямую, когда вы вызываете console.log("something") из фона, это сообщение регистрируется на панели справочной страницы. Чтобы просмотреть его, вы можете перейти к chrome://extensions/ и нажать на inspect view под своим расширением.

Когда вы нажимаете всплывающее окно, оно загружается на текущую страницу, поэтому console.log должен показывать сообщение журнала на текущей странице.

Ответ 4

Вы все еще можете использовать console.log(), но он входит в отдельную консоль. Чтобы просмотреть его - щелкните правой кнопкой мыши значок расширения и выберите "Осмотреть всплывающее окно".

Ответ 5

Простейшим решением было бы добавить следующий код в верхней части файла. И чем вы можете использовать все консоль Chrome, как обычно.

 console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc

Ответ 6

Попробуйте это, если вы хотите войти на панель активной страницы:

chrome.tabs.executeScript({
    code: 'console.log("addd")'
});

Ответ 7

В отношении исходного вопроса я хотел бы добавить к принятому ответом Мохамеда Мансура, что есть способ сделать эту работу наоборот:

Вы можете получить доступ к другим страницам расширения (например, странице параметров, всплывающей странице) с фоновой страницы / script с помощью вызова chrome.extension.getViews(). Как описано здесь.

 // overwrite the console object with the right one.
var optionsPage = (  chrome.extension.getViews()  
                 &&  (chrome.extension.getViews().length > 1)  ) 
                ? chrome.extension.getViews()[1] : null;

 // safety precaution.
if (optionsPage) {
  var console = optionsPage.console;
}