Можете ли вы программно получить доступ к выходу консоли Firebug?

Можно ли запрограммировать доступ к ранее записанному выходу Firebug?

Например:

console.log('a');
console.log('b');
console.log('c');

for (var i = 0; i < console.output.length; ++i) {
    alert(console.output[i]);  // "a", "b", "c"
}

Ответы

Ответ 1

Без обертывания window.console самостоятельно, я не считаю, что это возможно. Если посмотреть на источник, кажется, что когда вызывается метод Firebug console (выполняющийся внутри основного документа и, следовательно, не имеющий специальных привилегий), он оставляет некоторые объекты, лежащие в основном документе, а затем вызывает настраиваемое событие. Слушатель Firebug, работающий в привилегированном подключаемом модуле, берет событие, подбирает объекты, оставшиеся в документе, и добавляет соответствующие вещи на панель консоли, которая является частью Chrome браузера и поэтому недоступна для JavaScript, запущенного в основном окно.

Я мог ошибаться в деталях этого, потому что я только немного взглянул на источник Firebug и сделал очень мало плагинов для Firefox, но я думаю, что это в целом правильно.

Ответ 2

Paul Irish создал обертку для console.log, которая должна решить вашу проблему, посмотрите здесь

Ответ 3

Смотрите этот поток. (Не точный дубликат, но связанный).

Я не нашел способ прочитать вывод консоли, но если все, что вас интересует, захватывает ваши сообщения: log(), вы можете переопределить метод .log() или создать свой собственный, который напишите свои сообщения в журнале другим контейнером, а затем вызовите .log().

var myLogStr='';

function myLog(str)
{
  if(console) console.log(str);
  myLogString+=str+'\n';
}

Конечно, все объекты Firebug (консоль и т.д.) существуют в DOM, поэтому вы можете отслеживать идентификатор окна консоли и получать содержимое напрямую.

Обновление

Firebug также предлагает некоторые события, которые можно подключить к, что может обеспечить способ перехвата ошибок и т.д.