【问题标题】:Telling Firebug to Break as Soon as any Javascript is Executed告诉 Firebug 在任何 Javascript 执行后立即中断
【发布时间】:2009-12-21 05:39:29
【问题描述】:

当我单击一些<button> 元素时,我继承了一堆代码,这些代码会做一些意想不到的事情。

该页面包含大量 Javascript,尚不清楚在按钮或其父元素上设置了哪些事件(如果有)。我正在尝试查找执行开始的位置,以便调试正在发生的事情。

有没有办法让 Firebug(或任何 Javascript 调试器)在执行 任何 javascript 代码时中断?也许以某种方式以编程方式在每一行上设置一个断点?或者是否有其他方法可以找出按钮响应的事件(页面用户 boh Prototype、jQuery 和一些自定义 Javascript。我知道。)

【问题讨论】:

    标签: javascript debugging event-handling firebug


    【解决方案1】:

    Just press Pause button on the firebug panel (on the left-top corner of it, two yellow vertical lines, when Script tab selected) - and it will stops at first JS string.

    但是它会在任何事件中停止 JS 的执行——所以如果你有一个捕捉鼠标移动和鼠标点击的按钮——我将无法在鼠标点击时停止,因为每次你移动鼠标时脚本都会停止尝试将鼠标移到此按钮上。我建议你只在可疑的地方插入 alert() - 经过一些迭代后,你会找到你需要的确切字符串(发生错误的地方)。

    【讨论】:

    • 在某些情况下,您可以绕过鼠标移动/单击问题。对于按钮或任何其他可以接收焦点的元素,您可以通过 Tab 切换到该元素并按空格键或回车键来触发点击事件。
    • 嗯,+1 以获得好的信息,尽管单击该按钮似乎不适用于此特定页面(从 JavaScript 角度来看,这有点混乱)。该按钮会做一些发光的小事,但在页面上触发 javascript 操作并不会启动调试器。
    • 这里有同样的问题。无法停止:setTimeout(function() { window.location = '/someBad/place' }, 0);
    【解决方案2】:

    关闭 Internet 浏览器并再次打开。 “Break on next”将再次开始工作。否则,Firebug 会在一段时间后忽略此选项,并且不会中断但会为所有事件运行 javascripts 而不会警告您。

    【讨论】:

      【解决方案3】:

      我找到了a bookmarklet that will list all bound events in your page

      如果您不知道第三方代码绑定了哪些事件,这种方法很有用。

      【讨论】:

        【解决方案4】:

        如果您想查看页面上设置了哪些事件,您也可以尝试Eventbug

        【讨论】:

          【解决方案5】:

          如果这是一般调试问题,您可以使用 Safari / Chrome 中的 Web Inspector。一个额外的好处是您可以将以下语句放入您的 JavaScript 代码中以启动调试器:

          ...
          debugger; // Will trigger the debugger
          ...
          

          否则,您可以设置断点、条件断点、在下一次执行时暂停,以及所有常用技巧。 here 提供一些不错的视频。

          回应之前alert的建议。如果您可以访问调试器,我会认真推荐使用console.logconsole.dir。您将获得更多信息,而不会阻止脚本的执行。另外,不要忘记console.log 可以接受多个参数,这样您就可以很好地打印出数据,而不必将自己限制为像alert 这样的单个字符串。

          【讨论】:

          • Web Inspector 不能解决这个问题。不受欢迎的行为并不是停止执行。代码正常执行,但没有做我们想要的。我需要找到点击触发的代码。
          • 我的评论只是对已经陈述的内容的反刍,只是具有 Web Inspector 提供的优势。我试图指出 Firebug 不是唯一的答案。如果您想知道单击时会发生什么,请查看您单击的节点(和父节点)的事件侦听器。这在 WebKit nightlies 和 Firebug 提到的 Eventbug 扩展中可用。
          猜你喜欢
          • 2012-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-27
          • 2021-07-31
          • 1970-01-01
          相关资源
          最近更新 更多