如何在Internet Explorer中使用控制台日志记录?


119

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


8
小心!console.log()仅在IE的开发工具打开时才有效(是的,IE很烂)。看到stackoverflow.com/questions/7742781/...
阿德里安成为

Answers:


147

您可以通过启动“开发人员工具”(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中进行搜索。

2
嗯,尽管它不符合Firebug的要求,但仍然满足我的需求。谢谢!
Ground5hark 2010年

1
链接到MSDN
Casebash

73
请注意,在IE中,与Firefox不同,如果开发人员工具未激活,则window.console是未定义的,调用console.log()将中断。随时保护您的通话window.console && console.log('stuff');
Guss

1
万一仍然找不到它,请不要执行我的操作,然后尝试在窗口的顶部键入脚本:输入区域实际上是“开发人员工具控制台”窗口底部的文本区域/栏。 。
starmandeluxe

24

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

另一个选择是使用log4javascript(完整披露:由我编写),它具有自己的日志记录控制台,该控制台可在所有主流浏览器(包括IE> = 5)中运行,并为浏览器自身的控制台提供了包装器,以避免出现undefined的问题console


哈。.几个月我写了类似的东西。做得好!
tftd 2012年

@Tim Down上有一个解决方法stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

如果在生产中使用console.log(),则极为重要:

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

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

[显然删除警报(msg);声明一经验证即可生效]

另请参阅Internet Explorer的“控制台”是未定义的错误,以获取其他解决方案和更多详细信息



5

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

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

3

John Resig(jQuery的创建者)在他的《 Java忍者的秘密》一书中有一个非常简单的代码,可以处理跨浏览器的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);您写了“辞职”,大声笑
rvighne 2014年

1
有一个}在该片段缺失。:)
Nighto 2015年

2

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

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

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

  • 否则,如果已定义console.log(IE8)并且未定义console.debug(其他任何功能):将所有日志记录功能重定向到console.log,则可以保留这些日志!

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

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



0

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

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

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

在此处输入图片说明


0

我一直在做这样的事情:

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

从那时开始,总是使用log(...),不要使用console。[warn | error |等],只是保持简单即可。我通常更喜欢简单的解决方案,而不是花哨的外部库,它通常会有所回报。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.