расширение google chrome: консоль.войти () с фоновой страницы?
Если я называю console.log('something'); из всплывающей страницы или любого сценария, включенного в него, что он отлично работает.
однако, поскольку фоновая страница не запускается непосредственно с всплывающей страницы, она не включена в консоль.
есть ли способ, что я могу сделать console.log()в фоновом режиме страницы отображаются в консоли всплывающее окно?
есть ли способ, с фоновой страницы вызвать функцию на всплывающей странице?
8 ответов:
любой расширение страницы (кроме сценарии) имеет прямой доступ к странице через
chrome.extension.getBackgroundPage().это значит, внутри всплывающее окно, вы можете просто сделать:
chrome.extension.getBackgroundPage().console.log('foo');чтобы сделать его проще использовать:
var bkg = chrome.extension.getBackgroundPage(); bkg.console.log('foo');Теперь, если вы хотите сделать то же самое в пределах сценарии вы должны использовать Сообщение Передает для достижения этой цели. Причина, они оба принадлежат к разные домены, которые имеют смысл. Есть много примеров в Сообщение Передает страница для вас, чтобы проверить.
надеюсь, что очищает все.
отбросив очевидный ответ здесь на всякий случай. Вы знаете, что вы можете открыть консоль фоновой страницы, если вы нажмете на "фон.HTML ссылка" в списке расширений, верно?
Edit
для доступа к фоновой странице, которая соответствует вашим расширениями open
Settings / Extensionsили откройте новую вкладку и введитеchrome://extensions. Вы увидите что-то вроде этого скриншота.
под вашим расширением нажмите на ссылку
background page. Откроется новое окно. Для пример контекстного меню окно имеет название:_generated_background_page.html.
чтобы ответить на ваш вопрос прямо, когда вы называете
console.log("something")в фоновом режиме это сообщение регистрируется на консоли фоновой страницы. Для его просмотра перейдите по ссылкеchrome://extensions/и нажать наinspect viewпод вашим расширением.когда вы нажимаете всплывающее окно, оно загружается на текущую страницу, таким образом, консоль.журнал должен показывать сообщение журнала на текущей странице.
вы все еще можете использовать консоль.log (), но он регистрируется в отдельной консоли. Для того, чтобы просмотреть его - щелкните правой кнопкой мыши на значке расширения и выберите "проверить всплывающее окно".
самым простым решением будет добавить следующий код в верхней части файла. И чем вы можете использовать все полные Chrome console api как обычно.
console = chrome.extension.getBackgroundPage().console; // for instance, console.assert(1!=1) will return assertion error // console.log("msg") ==> prints msg // etc
попробуйте это, если вы хотите войти в консоль активных страницы:
chrome.tabs.executeScript({ code: 'console.log("addd")' });
в отношении исходного вопроса я хотел бы добавить к принятому ответу Мохаммеда Мансура, что есть также способ сделать эту работу наоборот:
Вы можете получить доступ к другим страницам расширения (т. е. параметры страницы, всплывающее окно) с в фоновой странице / скрипте С
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; }
Это старый пост, с уже хорошими ответами, но я добавляю свои два бита. Я не люблю использовать консоль.журнал, я бы предпочел использовать регистратор, который регистрируется на консоли или где угодно, поэтому у меня есть модуль, определяющий функцию журнала немного похожую на эту
function log(...args) { console.log(...args); chrome.extension.getBackgroundPage().console.log(...args); }когда я вызываю log ("это мой журнал"), он будет писать сообщение как в всплывающей консоли, так и в фоновой консоли.
преимущество состоит в том, чтобы иметь возможность изменять поведение журналов без необходимости изменения код (например, отключение журналов для производства и т. д...)

Comments