【问题标题】:How can I use console logging in Internet Explorer?如何在 Internet Explorer 中使用控制台日志记录?
【发布时间】:2011-02-09 01:08:51
【问题描述】:

IE 有控制台记录器吗?我正在尝试将一堆测试/断言记录到控制台,但我无法在 IE 中执行此操作。

【问题讨论】:

标签: javascript internet-explorer internet-explorer-8 console firebug


【解决方案1】:

您可以通过启动“开发者工具”(F12) 来访问 IE8 脚本控制台。点击“脚本”选项卡,然后点击右侧的“控制台”。

在您的 JavaScript 代码中,您可以执行以下任何操作:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

另外,您可以通过调用console.clear() 来清除控制台。

注意:看来您必须先启动开发者工具,然后刷新页面才能使用。

【讨论】:

  • 这仅适用于 IE8+,但它是一个非常棒的控制台。它基本上是 Firebug 的复制品,缺少一些功能以及其他一些功能。在 MSDN 中搜索它。
  • 啊,虽然它不如 Firebug,但它仍然满足我的需要。谢谢!
  • 链接到MSDN
  • 请注意,在 IE 中,与 Firefox 不同,如果开发人员工具未激活,window.console 未定义,调用console.log() 将中断。始终使用 window.console &amp;&amp; console.log('stuff'); 保护您的通话
  • 如果有人仍然找不到它,请不要做我所做的并尝试在窗口的顶部键入您的脚本:输入区域实际上是一个文本区域/栏开发者工具控制台窗口的底部。
【解决方案2】:

从第 8 版开始,Internet Explorer 与其他浏览器一样拥有自己的控制台。但是,如果未启用控制台,则console 对象不存在,并且对console.log 的调用将引发错误。

另一个选择是使用log4javascript(完全披露:由我编写),它有自己的日志控制台,适用于所有主流浏览器,包括 IE >= 5,加上浏览器自己的控制台的包装器,避免了未定义的console 的问题。

【讨论】:

【解决方案3】:

如果在生产中使用 console.log() 非常重要:

如果您最终将console.log() 命令发布到生产环境,您需要对 IE 进行某种修复 - 因为 console 仅在 F12 调试模式下定义。

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[显然删除了警报(msg);一旦你验证了它的工作声明]

有关其他解决方案和更多详细信息,另请参阅 'console' is undefined error for Internet Explorer

【讨论】:

    【解决方案4】:

    Firebug Lite 在 IE 中提供了很多 Firebug 功能。

    【讨论】:

      【解决方案5】:

      为其他浏览器保留行号的简单 IE7 及以下 shim:

      /* console shim*/
      (function () {
          var f = function () {};
          if (!window.console) {
              window.console = {
                  log:f, info:f, warn:f, debug:f, error:f
              };
          }
      }());
      

      【讨论】:

        【解决方案6】:

        在他的书“Javascript Ninja 的秘密”中,John Resig(jQuery 的创建者)有一个非常简单的代码来处理跨浏览器的 console.log 问题。他解释说他希望有一个适用于所有浏览器的日志消息,这是他的编码方式:

        function log() {
          try {
            console.log.apply(console, arguments);
          } catch(e) {
          try {
            opera.postError.apply(opera, arguments);
          }
          catch(e) {
            alert(Array.prototype.join.call( arguments, " "));
          }
        }
        

        【讨论】:

        • 我是 John Resig;你写了“辞职”,哈哈
        • 该 sn-p 中缺少 }。 :)
        【解决方案7】:

        对于仅限于 console.log 的 IE8 或控制台支持(无调试、跟踪等),您可以执行以下操作:

        • 如果控制台或 console.log 未定义:为 控制台功能(跟踪、调试、日志等)

          window.console = { debug : function() {}, ...};

        • 如果定义了console.log(IE8)并且没有定义console.debug(任何其他):将所有日志记录功能重定向到console.log,这允许保留这些日志!

          window.console = { debug : window.console.log, ...};

        不确定各种 IE 版本中的断言支持,但欢迎提出任何建议。

        【讨论】:

          【解决方案8】:

          您可以使用跨浏览器包装器:https://github.com/MichaelZelensky/log.js

          【讨论】:

            【解决方案9】:

            对于旧版本的 IE(IE8 之前),在 IE Developer Toolbar 中无法直接看到控制台日志,经过数小时研究并尝试了许多不同的解决方案,最后,以下工具栏对我来说是个不错的工具:

            这样做的主要优点是为 IE6 或 IE7 提供了一个控制台,因此您可以看到错误是什么(在控制台日志中)

            • 注意:
            • 免费
            • 工具栏的屏幕截图

            【讨论】:

              【解决方案10】:

              我一直在做这样的事情:

              var log = (function () {
                try {
                  return console.log;
                }
                catch (e) {
                  return function () {};
                }
              }());
              

              从那时起,始终使用 log(...),不要太喜欢使用控制台。[警告|错误|等等],保持简单。我通常更喜欢简单的解决方案而不是花哨的外部库,它通常会得到回报。

              避免 IE 出现问题的简单方法(使用不存在的 console.log)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-10-10
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多