【发布时间】:2020-01-15 18:04:20
【问题描述】:
我正在寻找一种解决方案,将我在控制台中看到的内容打印到 HTML 中的 div 元素中。 我正在将 Web 技术开发成电视,因此没有提供浏览器工具。 我找到了这个解决方案:
(function () {
if (!console) {
console = {};
}
var old = console.log;
var logger = document.getElementById('log');
console.log = function (message) {
if (typeof message == 'object') {
logger.innerHTML += 'LOG: ' + (JSON && JSON.stringify ? JSON.stringify(message) : String(message)) + '<br />';
} else {
logger.innerHTML += 'LOG: ' + message + '<br />';
}
}
console.error = function (message) {
if (typeof message == 'object') {
logger.innerHTML += 'ERROR: ' + (JSON && JSON.stringify ? JSON.stringify(message) : String(message)) + '<br />';
} else {
logger.innerHTML += 'ERROR: ' + message + '<br />';
}
}
console.warn = function (message) {
if (typeof message == 'object') {
logger.innerHTML += 'WARN: ' + (JSON && JSON.stringify ? JSON.stringify(message) : String(message)) + '<br />';
} else {
logger.innerHTML += 'WARN: ' + message + '<br />';
}
}
})();
但我需要一个更强大的解决方案来打印控制台的所有内容,而不仅仅是通过这三个函数传递的内容。 这可以通过 ES5 JavaScript 实现吗?
【问题讨论】:
-
如果您覆盖应该影响所有内容的
window.console.whatevermethod,前提是它们不会在 IIFE 中捕获这些方法 -
@Taplar 我已经测试了这个解决方案,它可以工作,但不是控制台输出中的所有信息都是日志、警告或错误,并且由 Javascript 提供。有时浏览器本身会记录信息,或者一般来说控制台对象有几种方法。
标签: javascript debugging console smart-tv