使用Firebug(1.11.2)在Firefox(19.0)中断点不起作用

时间:2013-03-08 04:38:55

标签: javascript debugging firefox firebug breakpoints

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>An example</title>

        <script type="text/javascript">
            function User(id) {
                this.id = id;
            };
            var bob = new User(32);

            var jack = new User(bob.id); 
            jack.id = 100;   // Set a breakpoint here, but it does not stop here
            alert('end of test' + jack.id);
        </script>
    </head>
    <body>

    </body>
</html>

顺便说一下,断点在chrome中正常工作。

我很困惑......这应该是一个非常简单的例子。这是Firefox的错误吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

看起来像是一个萤火虫的bug。在最后一个语句之前添加新行似乎可以解决问题。

答案 1 :(得分:1)

的确,我也复制了它。似乎是一个错误。

然而有些注意事项:

  1. 一般来说,建议最小化JavaScript的执行,就像你正在做的那样,但是在页面加载后将其推迟。例如。您可以将所有内容都包含在名为init的函数中,然后将addEventListener / attachListener用于load事件(或写入<body onload="init()">)。在HTML中执行JS即将减慢页面的呈现速度;必须解析和执行所有JS,因为它可能会动态添加一些HTML元素,这将改变页面稍后的HTML呈现。因此,避免以这种方式添加到页面中的计算量大且长的脚本。

  2. 您也可以将代码包装在所谓的IIFE(立即调用的函数表达式)中:

     
     <script type="text/javascript">
     (function () {
         function User(id) {
             this.id = id;
         };
         var bob = new User(32);
    
         var jack = new User(bob.id); 
         jack.id = 100;   // Set a breakpoint here, but it does not stop here
         alert('end of test' + jack.id);
     })();
     </script>
    

    在这种情况下,Firebug正确执行断点。

  3. 请注意,Firebug中的代码清单中的行号13和14未标记为绿色。这是来自Firebug的信息,如果你把它放在这一行,没有断点。在大多数情况下,这意味着该行中没有JavaScript(例如:HTML,空行,注释等),但有时这是由于Firebug中的错误。