Вот мое предложение:
<div id="log"></div>
<input id="command" onkeyup="handleCmdEnter(event,this)"/>
И JS:
var old = console.log;
var logger = document.getElementById('log');
console.log = function (message) {
if (typeof message == 'object') {
logger.innerHTML += (JSON && JSON.stringify ? JSON.stringify(message) : message) + '<br />';
} else {
logger.innerHTML += message + '<br />';
}
}
window.handleCmdEnter = (event, input) => {
if(event.key=='Enter'){
let val = input.value;
input.value ='';
logger.innerHTML+='<br>'+val;
try {
let res = eval(val);
logger.innerHTML+='<br>'+res;
} catch (e) {
old({e});
logger.innerHTML+='<br>EXCEPTION:'+e.message;
logger.innerHTML+='<br>Stacktrace:'+e.stack;
}
}
}
console.log('xxx');
А вот рабочий пример .
Это решение не включает стили и использует функцию 'eval' (= зло).Это переопределение функции console.log (вы можете переопределить другие функции консоли, такие как error
, debug
, ..., а также перехватывает другие параметры консоли, используя arguments
).
Выше я лишь даю базовую идею о том, как это сделать, ее нужно разработать (как библиотеку js), чтобы иметь больше функциональных возможностей, но StackOverflow необходим для размещения такого кода.