将所有Javascript控制台输出发送到DOM元素
如何将所有控制台输出发送到DOM元素中,以便在不打开任何开发人员工具的情况下查看它?我想查看所有输出,例如JS错误、将所有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
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}),这将不起作用
要使其工作,请执行前面的操作。应用(控制台、参数);