Ответ 1
У расширений Chrome был API для этого, experimental.devtools.console:
chrome.experimental.devtools.console.getMessages(function(messages) { })
Этот API был удален.
Я хотел бы знать, есть ли способ в javascript для извлечения истории консоли.
То, что я имею в виду в истории консоли, - это то, что появляется в консоли разработчика. Например, я хотел бы напечатать на html-странице все ошибки, предупреждения, информацию и журнал, которые отображаются в моих инструментах dev, не открывая их.
Сообщите мне, если я не понимаю.
У расширений Chrome был API для этого, experimental.devtools.console:
chrome.experimental.devtools.console.getMessages(function(messages) { })
Этот API был удален.
Я написал для этого кросс-браузерную библиотеку, называемую console.history
. Он доступен на GitHub:
https://git.io/console
Что библиотека в основном делает, это перехватить все вызовы console.[log/warn/error/debug/info]
и сохранить их в массиве console.history
. В качестве бонуса также добавляется полная трассировка стека.
Тестовый файл test.js
содержит:
function outer() {
inner();
}
function inner() {
var array = [1,2,3];
var object = {"foo": "bar", "key": "value"};
console.warn("Something went wrong, but we're okay!", array, object);
}
outer();
Ввод в console.history
будет:
{
"type": "warn",
"timestamp": "Thu, 01 Sep 2016 15:38:28 GMT",
"arguments": {
"0": "Something went wrong, but we're okay!",
"1": [1, 2, 3],
"2": {
"foo": "bar",
"key": "value"
}
},
"stack": {
"0": "at inner (http://localhost:1337/test/test.js:6:11)",
"1": "at outer (http://localhost:1337/test/test.js:2:3)",
"2": "at http://localhost:1337/test/test.js:9:1"
}
}
Невозможно получить данные консоли с помощью JavaScript. Только так вы сможете это сделать, в основном, захватить все функции консоли и сохранить копию, а также вызвать строки журнала по умолчанию.
console.history = [];
var oldConsole = {};
for (var i in console) {
if (typeof console[i] == 'function') {
oldConsole[i] = console[i];
var strr = '(function(){\
console.history.push({func:\'' + i + '\',args : Array.prototype.slice.call(arguments)});\
oldConsole[\'' + i + '\'].apply(console, arguments);\
})';
console[i] = eval(strr);
}
}
И затем используйте console.history для доступа к истории