如何将所有控制台输出发送到DOM元素,以便无需打开任何开发人员工具即可查看?我想看看所有输出,例如JS错误,console.log()
输出等
答案 0 :(得分:16)
我发现上面接受的答案很有帮助,但它确实有几个问题,如评论所示:
1)在Chrome中不起作用,因为“前”并未考虑此上下文不再是控制台,修复方法是使用JavaScript apply方法。
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);
}
以下是更新后的工作示例。 http://jsfiddle.net/eca7gcLz/
答案 1 :(得分:12)
这是快速解决方案的一种方法:
<强>的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);
}
<强> HTML 强>
<div id="mylog"></div>
答案 2 :(得分:1)
简单console.log
重新定义,无错误处理:
const originalConsoleLog = console.log
console.log = (...args) => {
args.map(arg => document.querySelector("#mylog").innerHTML += arg + '<br>')
}
console.log = originalConsoleLog