我想在网站中嵌入一个JS-Console以进行扩展调试。有没有可用的库或钩子?我怎样才能捕获console.log消息?
答案 0 :(得分:6)
如何捕获console.log消息?
您可以对真实的console.log
方法进行修补,并使用输入执行任何操作:
var realConsoleLog = console.log;
console.log = function () {
var message = [].join.call(arguments, " ");
// Display the message somewhere... (jQuery example)
$(".output").text(message);
realConsoleLog.apply(console, arguments);
};
这是一个working example。它会像console.log
元素一样记录.output
中的{{1}},也会像往常一样记录在控制台中。
答案 1 :(得分:2)
您可以覆盖console.log
<div id="console"></div>
脚本:
if (window.console) console = {
log: function(){
var output='',
console=document.getElementById('console');
for (var i=0;i<arguments.length;i++) {
output+=arguments[i]+' ';
}
console.innerText+=output+"\n";
}
};
//test
var test=12345;
console.log('test', 'xyz', test);
答案 2 :(得分:1)
您可以使用eval()
函数来评估字符串中的javascript,然后将该输出打印到某个div。这将为您提供REPL的一些功能。
const consoleElm = document.querySelector('#console');
const clearButton = document.querySelector('#clear');
clearButton.addEventListener('click', (event) => {
consoleElm.innerHTML = '';
});
const consoleForm = document.querySelector('#console-form');
consoleForm.addEventListener('submit', (event) => {
event.preventDefault();
const command = event.target.querySelector('#command').value;
const value = eval(command);
consoleElm.innerHTML += (value === undefined ? 'undefined' : value) + '\n';
});
<div>
<form id="console-form">
<input type="text" id="command">
<input type="submit" value="Run Command">
<button id="clear" type="button">Clear</button>
</form>
<hr>
<pre id="console"></pre>
</div>