расширение google chrome: консоль.войти () с фоновой страницы?



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



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



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



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

650   8  

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. Вы увидите что-то вроде этого скриншота.

Chrome extensions dialogue

под вашим расширением нажмите на ссылку 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

    Ничего не найдено.