【问题标题】:Why is mouse click event listener breakpoint hit in a blackboxed script in Chrome?为什么鼠标单击事件侦听器断点在 Chrome 中的黑盒脚本中命中?
【发布时间】:2016-05-20 03:25:41
【问题描述】:

我试图找出单击按钮时调用的 Javascript 方法。我已经对一些第三方 javascript 文件进行了黑盒化。我正在使用最新版本的 Chrome 和 Canary。

我在 devtools 中启用了鼠标点击事件监听器断点。当我单击一个按钮时,会在一个被黑盒化的 js 文件中命中一个调试器断点。我正在使用第三方按钮,其 JS 点击事件处理程序在我之前先执行。我对他们的代码文件进行了黑盒化,希望我的代码能够获得断点。他们的代码文件显示“此脚本在调试器中被黑盒化”黄色消息。

脚本文件黑盒化时为什么会命中断点?

【问题讨论】:

    标签: google-chrome-devtools


    【解决方案1】:

    我创建了一个测试,在此页面上添加了一个click 事件侦听器断点,它在jquery-min.js 中暂停。我将该脚本黑盒化并再次尝试。它不再在 jQuery 中中断。

    我重新阅读了您的帖子,您提到了“调试器断点被命中”。我现在将其理解为显式断点,例如源代码中的 debugger; 语句或开发工具中的一组(通过单击行号),并且事件侦听器断点无关紧要。

    如果您在黑盒化的库中有debugger; 语句,则仍会命中断点。您可以通过右键单击该语句所在的行号并选择“从不在这里暂停”来禁用断点。

    就目前而言,如果您通过开发工具在黑盒库中放置断点,它仍然会在该脚本中中断。它显示了更明确的破坏代码的意图,而不是可能由第 3 方留下的东西。您必须禁用或删除它们。

    似乎存在关于黑盒化脚本是否应该忽略该库中设置的断点的争论,因为黑盒化可以被认为更多是关于不进入库代码/在调用堆栈中查看它。请参阅讨论here。有趣的是,文档还包括以下内容:

    调试器不会在库代码中设置的任何断点处暂停。

    https://developer.chrome.com/devtools/docs/blackboxing

    事实并非如此。

    这里的行为和文档不一致。我将尝试获取有关此的更新。

    【讨论】:

    • 我在任何地方都没有调试器语句,并且在任何地方都没有显式断点。否则这是预期的行为。
    • @Tony_Henrich 如果除了在开发工具中添加的click 事件侦听器断点之外没有断点,那么它不应该在黑盒脚本中暂停。你能提供一些样品来测试吗?
    • 我知道。这就是我发布问题的原因。样品不会有任何好处。需要查看整个应用程序。谢谢。无论如何,我找到了另一种实现我想要的方法。
    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2013-06-14
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多