Можете ли вы программно получить доступ к выходу консоли Firebug? - PullRequest
15 голосов
/ 07 декабря 2010

Можно ли программно получить доступ к ранее зарегистрированному выходу 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"
}

Ответы [ 3 ]

5 голосов
/ 07 декабря 2010

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

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

5 голосов
/ 07 декабря 2010

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

2 голосов
/ 07 декабря 2010

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

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

var myLogStr='';

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

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

Обновление

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

...