【问题标题】:Chrome debugger skips inline JavaScript code on first clickChrome 调试器在第一次点击时跳过内联 JavaScript 代码
【发布时间】:2015-01-29 04:59:54
【问题描述】:

当使用右侧Event Listener Breakpoints选项的sources下的Mouseclick选项时,调试器会跳过以下函数代码:

<html>
    <head>
        <script type="text/javascript">
            function test()
            {
                return true;
            }
        </script>
    </head>
    <body>
        <input type="button" onclick="return test();" value="test">
    </body>
</html>

问题不在于它不运行。就是我无法调试它,直到我按下input按钮两次才能step into (F11)该功能。

否则我无法调试代码中的内容。这很令人沮丧,因为它每次刷新页面时都会发生。这是一个错误还是本来就是这样的?

我正在使用:Chrome Ubuntu 版本 40.0.2214.93(64 位)

附:对于那些询问/将要询问的人,

我正在维护一个遗留应用程序,不幸的是,它有许多内联函数。当我的公司正在构建新软件来替换它时,花时间将所有这些放入文件中是没有意义的。由于资源用于构建新代码,因此我必须以这种方式对遗留应用程序进行少量调试。

【问题讨论】:

  • 尝试放置一个console.log("hello");在返回 true 之前;在你的函数中。
  • 我的猜测是,由于您使用的是 onclick 属性,因此您实际上并没有将函数作为处理程序绑定到事件。相反,您绑定一个执行该函数的匿名函数。
  • 这可能很奇怪,但请尝试onclick="console.log(test())"。应该在控制台中打印true
  • @Huangism 问题不在于它不运行,是我无法在第一次点击时调试它。
  • @Huangism 在页面加载时打开调试器也不起作用。您会期望它在第一次点击时起作用。

标签: javascript google-chrome google-chrome-devtools inline-code


【解决方案1】:

虽然我使用的是 v38,但对我有用。作为一种解决方法,尝试将调试器语句添加到处理程序中(在调试时)

function test(){
    debbugger;
    return true;
}

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多