Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将所有Javascript控制台输出发送到DOM元素_Javascript_Debugging_Console - Fatal编程技术网

将所有Javascript控制台输出发送到DOM元素

将所有Javascript控制台输出发送到DOM元素,javascript,debugging,console,Javascript,Debugging,Console,如何将所有控制台输出发送到DOM元素中,以便在不打开任何开发人员工具的情况下查看它?我想查看所有输出,例如JS错误、console.log()output等。这是一种快速解决方案: Javascript var former = console.log; console.log = function(msg){ former(msg); //maintains existing logging via the console. $("#mylog").append("<d

如何将所有控制台输出发送到DOM元素中,以便在不打开任何开发人员工具的情况下查看它?我想查看所有输出,例如JS错误、
console.log()
output等。

这是一种快速解决方案:

Javascript

var former = console.log;
console.log = function(msg){
    former(msg);  //maintains existing logging via the console.
    $("#mylog").append("<div>" + msg + "</div>");
}

window.onerror = function(message, url, linenumber) {
    console.log("JavaScript error: " + message + " on line " + 
            linenumber + " for " + url);
}
var-former=console.log;
console.log=函数(msg){
前者(msg);//通过控制台维护现有日志记录。
$(“#mylog”).append(“+msg+”);
}
window.onerror=函数(消息、url、行号){
log(“JavaScript错误:+消息+”在线”+
行号+表示“+url”);
}
HTML

<div id="mylog"></div>


工作示例

我发现上面接受的答案很有帮助,但它确实存在一些问题,如评论所示:

1) 在Chrome中不起作用,因为“前一个”没有考虑到这个上下文不再是控制台,修复方法是使用JavaScript应用方法

2) 它不考虑传递到console.log的多个参数

我还希望它在没有jQuery的情况下工作

    var baseLogFunction = console.log;
    console.log = function(){
        baseLogFunction.apply(console, arguments);

        var args = Array.prototype.slice.call(arguments);
        for(var i=0;i<args.length;i++){
            var node = createLogNode(args[i]);
            document.querySelector("#mylog").appendChild(node);
        }

    }

    function createLogNode(message){
        var node = document.createElement("div");
        var textNode = document.createTextNode(message);
        node.appendChild(textNode);
        return node;
    }

    window.onerror = function(message, url, linenumber) {
        console.log("JavaScript error: " + message + " on line " +
            linenumber + " for " + url);
    }
var baseLogFunction=console.log;
console.log=函数(){
baseLogFunction.apply(控制台、参数);
var args=Array.prototype.slice.call(参数);

对于(var i=0;i

简单
console.log
重新定义,无错误处理:

  const originalConsoleLog = console.log
  console.log = (...args) => {
    args.map(arg => document.querySelector("#mylog").innerHTML += arg + '<br>')
  }
  console.log = originalConsoleLog
const originalConsoleLog=console.log
console.log=(…args)=>{
args.map(arg=>document.querySelector(“#mylog”).innerHTML+=arg+'
') } console.log=originalConsoleLog
要获取错误消息(或至少解析错误),您可以使用。请注意,这不会获取与加载内容(图像、脚本、Ajax等)相关的错误另外,它可能没有得到广泛的支持;我真的不知道。谢谢你的回答。我在使用Chrome时,在你的小提琴中发现了一个
未捕获的TypeError:非法调用
错误。想知道为什么吗?@John,因为它包括一行:va我想抛出一个错误,告诉你它被捕获了。在Chrome中,我得到了这些错误,没有输出中出现了一些东西。但在Firefox中效果很好。我必须研究一下控制台的不同之处。谢谢!那么行号呢?有没有可能得到它们?值得注意的是,如果console.log有多个参数:
console.log(“string”,[“array”],{object:true}),这将不起作用
要使其工作,请执行前面的操作。应用(控制台、参数);