如何将消息(最好包括变量)打印到错误控制台?
例如,类似:
print('x=%d', x);
如何将消息(最好包括变量)打印到错误控制台?
例如,类似:
print('x=%d', x);
Answers:
console.log()
etc应该在所有浏览器(包括IE)中都可以使用。但是,在所有情况下,都需要同时打开调试器窗口,否则调用console
将产生错误。
console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message
您还可以将CSS添加到日志消息中:
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
您就可以在控制台内使用CSS了:
异常记录到JavaScript控制台中。如果要禁用Firebug,可以使用该选项。
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
用法:
log('Hello World');
log('another message');
throw
必须将其包装在setTimeout
?
调试JavaScript:概述了一种实现跨浏览器工作的好方法:丢掉您的警报!。
throw()
绝对不是这样做的方法。迟早会惹上麻烦。对我来说,这是更快的:(
这是一个关于如何将消息打印到浏览器的错误控制台而不是调试器控制台的字面问题的解决方案。(可能有充分的理由绕过调试器。)
正如我在有关在错误控制台中引发错误以获取消息的建议的注释中所指出的那样,一个问题是这将中断执行线程。如果您不想中断该线程,则可以将错误引发到一个单独的线程中,该线程是使用setTimeout创建的。因此,我的解决方案(原来是Ivo Danihelka提出的解决方案):
var startTime = (new Date()).getTime();
function logError(msg)
{
var milliseconds = (new Date()).getTime() - startTime;
window.setTimeout(function () {
throw( new Error(milliseconds + ': ' + msg, "") );
});
}
logError('testing');
我包括自开始时间以来的时间(以毫秒为单位),因为超时可能会歪曲您可能希望看到消息的顺序。
Error方法的第二个参数用于文件名,此处为空字符串,以防止输出无用的文件名和行号。可以获取调用者功能,但不能以独立于浏览器的简单方式获得。
如果我们可以显示带有警告或消息图标而不是错误图标的消息,那就太好了,但我找不到解决方法。
使用throw的另一个问题是,它可能会被封闭的try-catch捕获并丢弃,并且将throw置于单独的线程中也可以避免该障碍。但是,还有另一种可以捕获错误的方式,即是否将window.onerror处理程序替换为执行不同操作的处理程序。不能在那帮你。
实际回答问题:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
除了错误,您还可以使用信息,日志或警告。
console.error(..)
是一项非标准功能,不应在生产中使用。你对此有什么看法?您对使用console.error
vs 的新手程序员有什么建议console.log
吗?
如果您使用的是Firebug,并且还需要支持IE,Safari或Opera,则Firebug Lite会向这些浏览器添加console.log()支持。
关于上述'throw()'的注释。似乎它完全停止了页面的执行(我在IE8中检查了),因此对于记录“正在进行的进程”(例如跟踪某个变量...)不是很有用。
我的建议可能是在文档中的某个位置添加textarea元素,并在需要时更改(或附加)它的值(这将更改其文本)以记录信息。
console.log()
,throw()
等的内置方法。此外,throw()
您似乎暗示的行为也没有错-停止执行的事实是有意记录的(开发人员。 mozilla.org/zh-CN/docs/Web/JavaScript/Reference/…),并且与其他编程语言中引发/捕获异常的方式保持一致。(如果要在不停止执行的情况下记录变量的内容,那console.log()
是
console.log
-因此人们提供了替代方案。关于throw()
停止执行,这当然是故意的,没有人说不是。这就是为什么它通常不是在运行时记录调试信息的好方法,这是OP想要的...
与往常一样,Internet Explorer是旱冰鞋中的大大象,仅使用它就可以阻止您console.log()
。
jQuery的日志可以很容易地修改,但是很难在任何地方添加它。如果您使用的是jQuery,则一种解决方案是将其放在最后的jQuery文件中(首先缩小):
function log()
{
if (arguments.length > 0)
{
// Join for graceful degregation
var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];
// This is the standard; Firebug and newer WebKit browsers support this.
try {
console.log(args);
return true;
} catch(e) {
// Newer Opera browsers support posting erros to their consoles.
try {
opera.postError(args);
return true;
}
catch(e)
{
}
}
// Catch all; a good old alert box.
alert(args);
return false;
}
}
访问https://developer.chrome.com/devtools/docs/console-api以获取完整的控制台API参考
console.error(object[Obj,....])\
在这种情况下,object将是您的错误字符串
function foo() {
function bar() {
console.trace("Tracing is Done here");
}
bar();
}
foo();
console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate
To Print Error:- console.error('x=%d', x);
console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");
最简单的方法是:
console.warn("Text to print on console");
要回答您的问题,您可以使用ES6功能,
var var=10;
console.log(`var=${var}`);
这不会打印到控制台,但是会向您打开一个警告弹出窗口,其中包含您的消息,这可能对某些调试很有用:
做就是了:
alert("message");