我正在使用以下存根来防止在生产应用程序中保留console.log语句:
// Protect against IE8 not having developer console open.
var console = console || {
"log": function () {
},
"error": function () {
},
"trace": function () {
}
};
这可以正常工作,因为它可以防止在IE8中调用console.log而不打开开发人员工具时抛出异常。但是,如果我打开dev,我不喜欢这个事实。代码加载后的工具 - 我仍然没有看到我的日志消息。
两者都有可能吗?我的尝试让我无法递归console.log调用。我也发现了这个:http://log4javascript.org/但除非完全必要,否则我不愿意
编辑:澄清:我只是想在开发时不抛出异常。控制台未打开,但如果以后打开它,请使用控制台。
答案 0 :(得分:0)
是的,你可以这样做:
if (typeof(console) === "undefined") {
var console = {
log: function() { },
error: function() { },
trace: function() { }
};
}
答案 1 :(得分:0)
创建一个包装函数并调用它而不是console.log
。
function log(msg) {
var console = window.console;
if (console && typeof console.log === 'function') {
console.log(msg);
}
}
这样,它不会覆盖window.console
并使其在以后不可用。