Расширение 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;
}