IE8控制台日志 - 存根如果dev工具没有打开,但是如果dev工具打开了吗?

时间:2013-09-05 20:51:59

标签: javascript internet-explorer-8 console

我正在使用以下存根来防止在生产应用程序中保留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/但除非完全必要,否则我不愿意

编辑:澄清:我只是想在开发时不抛出异常。控制台未打开,但如果以后打开它,请使用控制台。

2 个答案:

答案 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并使其在以后不可用。