Javascript 什么';在IE中写入脚本控制台(console.log)的正确方法是什么?

Javascript 什么';在IE中写入脚本控制台(console.log)的正确方法是什么?,javascript,jquery,internet-explorer,logging,console,Javascript,Jquery,Internet Explorer,Logging,Console,我在document.ready()中定义了console.log的替代品: 我以为IE应该有这个功能,但是,当我包括上面的调用时 console.log("doc ready"); 输出会出现在Firefox控制台中,但不会出现在IE中——事实上,IE脚本的执行在此时完全中断 在IE中写入控制台的正确方式是什么? 控制台是为firebug设计的 您必须在IE中安装以启用写入控制台。由于指令顺序错误,脚本执行中断,这可能更好: $(document).ready(function(){

我在
document.ready()
中定义了
console.log
的替代品:

我以为IE应该有这个功能,但是,当我包括上面的调用时

  console.log("doc ready");
输出会出现在Firefox控制台中,但不会出现在IE中——事实上,IE脚本的执行在此时完全中断

在IE中写入控制台的正确方式是什么?

控制台是为firebug设计的


您必须在IE中安装以启用写入控制台。

由于指令顺序错误,脚本执行中断,这可能更好:

$(document).ready(function(){

  if(typeof console === "undefined"){
    console = { log: function() { } };
  }
  console.log("doc ready");
}

如果在检查控制台是否存在(如果不存在则创建控制台)之前先访问控制台,则会导致错误。

IE6/7默认情况下没有控制台

事实上,Firefox也是如此——它是由一个名为Firebug的插件提供的;如果您使用的是未安装Firebug的Firefox副本,那么您在尝试调用
控制台时会遇到错误,就像在IE中一样

IE8/9确实有一个控制台

Chrome和Safari确实有一个内置的控制台对象,但不要指望它能以与Firebug或IE8完全相同的方式工作

请注意,在所有浏览器中,除非调试窗口打开,否则可能不会创建console对象。这意味着您使用
控制台.log调用的代码可能会在任何浏览器中失败,而不仅仅是IE

在您的示例中,如果不存在虚拟的
console
对象,您实际上是在创建它,这显然是为了防止没有控制台的浏览器在调用
console.log()
时崩溃。但是,在运行代码之前,您要调用
console.log()
,因此那些没有控制台的浏览器将在该行崩溃。因此,您应该移动
console.log(“doc ready”)行向下,因此它位于检测
控制台是否存在的位之后

如果您希望IE的控制台存在,有一个名为Firebug的版本,可以在任何浏览器上运行。如果运行此操作,它将创建
控制台
对象

但是,请注意,它只能在页面加载后运行,因此您永远无法让它在document ready函数中显示控制台消息。此外,如果控制台对象已经存在,它可能无法创建,因此文档中准备创建虚拟控制台对象的代码可能会阻止Firebug Lite正常工作


最后,在使用控制台进行调试时,请确保不要将实时代码与对
console.log
的调用一起发送,即使您计划以后仅将其用于调试目的。正如您已经看到的,如果浏览器没有console对象,它们可能会导致浏览器停止执行代码,并且会有大量没有console对象的实时用户,因此,请注意避免给实时用户带来问题:最好的办法是在发送代码之前始终确保删除了对控制台的所有调用。

如果没有可用的控制台,我将使用以下方法故障切换到firebug lite。这保证了您将获得一些描述的控制台,尽管它们的工作方式略有不同,所以要小心

function attachConsole(force) {
  if(force || typeof console === "undefined"){
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= 'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js';
    head.appendChild(script);
    return true;
  }
return false;
}

错误,您必须在IE7及以下版本中为控制台安装firebug lite。IE8有一个控制台,在所有日志记录方法上都不如Firebug那么健壮,但它确实存在。这在某种程度上是错误的,因为IE在IE8+中有一个控制台,没有插件/额外的js代码。@epascarello-很公平,尽管对于原始海报来说它是失败的。(不过,他没有具体说明他使用的IE的版本)。[编辑了我的答案以使其更具体]投票支持提及永远不要使用console.log发布实时代码。
function attachConsole(force) {
  if(force || typeof console === "undefined"){
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= 'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js';
    head.appendChild(script);
    return true;
  }
return false;
}