【问题标题】:Breakpoints does not work in Firefox (19.0) using Firebug(1.11.2)断点在使用 Firebug(1.11.2) 的 Firefox (19.0) 中不起作用
【发布时间】:2013-03-09 06:51:28
【问题描述】:
<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 中正常工作。

我很困惑...这应该是一个非常简单的例子。这是火狐的bug吗?

谢谢!

【问题讨论】:

  • 控制台是否显示错误?
  • 控制台没有发现错误。最后一行中的警报按预期工作。

标签: javascript debugging firefox firebug breakpoints


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    一些注意事项:

    1. 通常建议尽量减少 JavaScript 的执行,就像您正在执行的操作一样,但在页面加载后推迟执行。例如。您可以将所有内容包装在一个名为init 的函数中,然后将addEventListener / attachListener 用于load 事件(或写入&lt;body onload="init()"&gt;)。在 HTML 中执行 JS as-you-go 会减慢页面的渲染速度;所有的 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 中的错误。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2017-06-15
      • 2011-01-24
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2013-02-07
      • 2011-06-10
      • 1970-01-01
      相关资源
      最近更新 更多