Расширение Google Chrome: возможно ли получить вывод консоли (ошибки js, console.log и т. д.)

Я разрабатываю расширение для Chrome, и мне действительно нужно получить вывод консоли как объект.

Можно ли получить что-либо из этого в расширении chrome popup.html/popup.js или где-то еще?

У меня есть объект вкладки, могу ли я как-то получить эту конкретную консоль вкладок или вывести ошибку из инспектора/инструмента разработки в консоли Chrome как объект в коде?


comment
Вы имеете в виду, что хотите отлавливать любые ошибки, которые выводятся на консоль, а затем выводить их на экран?   -  person Ryan    schedule 22.10.2012
comment
Когда я нажимаю кнопку расширения (так же, как когда я открываю расширение popup.html/popup.js), я хочу получить полный вывод консоли и выполнять с ним манипуляции, подсчитывать ошибки, подсчитывать предупреждения, каким-то образом анализировать вывод, а затем отображать его в всплывающее html.   -  person XFaktor    schedule 22.10.2012
comment
Но тем не менее, неважно, что и как я буду это делать, так как я сам не уверен, но сначала мне нужно получить вывод/консоль/логи/ошибку или как бы мы это назвали как объект в коде :) p.s. спасибо за попытку помочь :)   -  person XFaktor    schedule 22.10.2012
comment
Это уже должно быть возможно, верно?   -  person Ryan    schedule 17.12.2019


Ответы (4)


Консоль Google Chrome не имеет возможности (на данный момент) получить вывод/содержимое консоли.

person tobspr    schedule 22.10.2012
comment
Объект console не имеет dump() в своем прототипе. - person Alexander Pavlov; 22.10.2012
comment
Uncaught TypeError: Объект #‹Консоль› не имеет метода дампа - person XFaktor; 22.10.2012
comment
Так что, похоже, это была просто бета-команда или она просто доступна на веб-страницах. - person tobspr; 22.10.2012
comment
Я не уверен, но пробовал это во всех областях кода, похоже, не работает. Тем не менее спасибо за ответ. - person XFaktor; 22.10.2012
comment
Если вы запустите console.log(console.__proto__), вы увидите, что объект консоли не имеет для этого никакой функции. - person tobspr; 22.10.2012
comment
Я согласен, но эта функция должна быть не в консоли, а в Google Chrome API или расширениях API/функции, например: developer.chrome.com/extensions/devtools.inspectedWindow.html, который позволит получать контент из консоли. Это не консоль, которая должна что-то делать :) - person XFaktor; 22.10.2012
comment
Да, но зачем вам консольный вывод? Обычно это просто для отладки... - person tobspr; 22.10.2012
comment
Я создаю расширение, которое должно анализировать/проверять и т. д. и т. д. страницу, поэтому я хотел получить вывод консоли, чтобы иметь возможность подсчитывать ошибки или отображать их для обычного пользователя по-человечески :) - person XFaktor; 22.10.2012
comment
ааа :) конечно, но я просто подумал, может быть, это возможно, так как это само по себе было расширением в начале только то, что встроено. Это просто странно, потому что сам хром использует эти ошибки и вывод во многих местах, и это странно, что его нельзя получить в расширении :) Тем не менее спасибо за беседу :) - person XFaktor; 22.10.2012

В вашем файле popup.js вы можете просто использовать console.log("stuff"), затем щелкнуть правой кнопкой мыши на своем расширении и перейти к отладчику или inspect_element -> console, чтобы увидеть вывод.

Из вашего фонового файла вам нужно будет сделать:

popup = chrome.extension.getViews('popup'); // this returns an array

popup[0].console.log("stuff");

Затем просто выполните те же действия, что и выше.

Подробнее о взаимодействии между представлениями см. в разделе api get views, а также здесь: еще один способ взаимодействия между страницами.

person Ryan    schedule 22.10.2012
comment
Совершенно не то, что я хотел :) но тем не менее спасибо. Что мне нужно, так это получить вывод в коде как объект или строку, а не просто увидеть это самому :) спасибо - person XFaktor; 22.10.2012
comment
если вы используете console.log(tab), а tab является объектом, он покажет вам все, что содержится в этом объекте. если ваш объект вкладки имеет атрибут tab.error и вы console.log(tab.error), то он покажет вам ошибку. В остальном я не знаю, к чему вы клоните, потому что все является объектом в javascript. - person Ryan; 22.10.2012
comment
JavaScript не является «типизированным» языком. Когда вы объявляете var, вы действительно объявляете объект, независимо от того, что вы в него вкладываете. - person Ryan; 22.10.2012
comment
console.log(tab) не имеет никакого объекта в соответствии с консолью, консоль — это дополнительный инструмент разработки в chrome api, мне нужно как-то поговорить с этим инструментом разработки и вывести его как объект для текущей вкладки. У него нет объекта tab.error. - person XFaktor; 22.10.2012
comment
Спасибо за разъяснения. Но мое вводящее в заблуждение объяснение между объектами и выводом не влияет на вопрос и на то, что мне нужно получить объект вывода консоли для конкретной вкладки в коде. - person XFaktor; 22.10.2012

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

  1. Этот SO-ответ показывает, как вы можно сохранить все действия Chrome, включая console.log() строки, в локальном файле, запустив Chrome с --enable-logging --v=1
  2. Затем этот SO Answer показывает, как расширение может читать этот локальный файл.
person Stan James    schedule 27.02.2019

В Chrome Extemsion есть три контекста JavaScript: Content Script, Backgrond Script и Popup. В каждом контексте кода вы можете использовать console.log(). то есть console.log("I am here");

var tempObject = {'one': 'v_one', 'two', 'v_two'};

console.log(tempObject);

Примечание. Вывод будет доступен только в том контексте кода, который вы упомянули console.log('Hello');.

person Raghvendra Parashar    schedule 03.11.2012