在网站中嵌入JS控制台

时间:2013-10-28 13:44:22

标签: html5 console javascript

我想在网站中嵌入一个JS-Console以进行扩展调试。有没有可用的库或钩子?我怎样才能捕获console.log消息?

3 个答案:

答案 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>