代码之家  ›  专栏  ›  技术社区  ›  Dan Inactive

javascript最佳实践:处理特定于Firebug的代码

  •  12
  • Dan Inactive  · 技术社区  · 15 年前

    Firebug无疑是一个很好的JavaScript调试工具;我广泛使用console.log()。

    我想知道是否可以在生产中保留Firebug特定的代码。 最佳实践是什么?注释调试代码?

    9 回复  |  直到 14 年前
        1
  •  14
  •   John Topley    15 年前

    如果在生产代码中保留console.log()调用,则使用Internet Explorer访问该站点的用户将出现javascript错误。如果这些人配置了额外的调试工具,那么他们将看到讨厌的对话框或弹出窗口。

    快速搜索揭示了该线程讨论检测Firebug控制台是否存在的方法: http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html

        2
  •  14
  •   Gareth Davis    15 年前

    以前被这个咬过。理想情况下,所有console.log语句都需要在生产之前删除,但这很容易出错,开发人员总是忘记或只在ff+firebug中进行测试。

    一种可能的解决方案是创建一个虚拟控制台对象(如果尚未定义)。

    if( typeof window.console == 'undefined'){
        window.console = {
            log:function(){}
        };
    }
    

    注意一点:对于10.4版的Safari来说,任何对console.log的调用都会引发安全异常,因为console对象是Mac OS Dashboard小部件中使用的保留对象。不知道情况会不会再这样了,今晚会查的。

        3
  •  8
  •   annakata    15 年前

    我个人在不久前修改了我的压缩器,以去掉控制台引用的预压缩。在那里添加一个regex几分钟可以节省一辈子的麻烦。

        4
  •  3
  •   Alex    15 年前

    我只是想为任何JS调试添加一个非常好的提示…使用关键字“debugger”,就像代码中的断点一样,firebug也会检测到它,msie(如果您有Visual Studio)也会检测到它,正如我所说的它是断点。

    似乎没有多少人知道这一点,但我发现它是无价的…另外,如果运行代码的计算机上没有安装调试程序,则不会发生任何情况,代码也会正常运行。尽管我不建议把它们留在那里。

        5
  •  2
  •   iamdash    15 年前

    我因为这个头痛得厉害。

    我经常使用console.log(),直到最近,我才发现它会导致整个JS代码在不使用firebug的FF版本中失败。

    我通常在上线前运行一个搜索,并对其进行评论。

    D

        6
  •  2
  •   Kev    15 年前

    有些压缩器会去掉前缀为;;(这是一个合法的序列,是三个空语句。)这样,您就不必严格限制于控制台引用(即,您可以进行一些计算,然后再进行console.log()最后的结果,压缩器可以去掉所有这些引用。)我使用 JavaScript::Minifier 为此。

        7
  •  1
  •   voidstate    15 年前

    我在oop javascript中使用它,为检查Firebug存在的日志制作自己的包装:

    myclass.prototype.log = function()
    { 
        if( typeof window.console != 'undefined' )
        {
            console.log.apply( null, arguments ); 
        }
    }
    

    只要打电话:

    this.log( arg1, arg2, ...)
    
        8
  •  0
  •   Du Song    15 年前

    只是提醒您,ie dev工具不支持console.log上的apply()。

    当dev工具处于活动状态时,调用console.log.apply()将在IE8中引发异常。

        9
  •  0
  •   Maher Saif    14 年前

    你可以试试 javascript调试 ,这是console.log的简单包装。 http://benalman.com/projects/javascript-debug-console-log/