Можете ли вы программно получить доступ к выходу консоли 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 также предлагает некоторые события, которые можно подключить к, что может обеспечить способ перехвата ошибок и т.д.