为什么在Chrome中的黑盒子脚本中点击鼠标单击事件侦听器断点?

时间:2016-05-20 03:25:41

标签: google-chrome-devtools

我试图找出单击按钮时调用哪个Javascript方法。我有一些黑盒子的第三方javascript文件。我使用的是最新版本的Chrome和Canary。

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

为什么在脚本文件被黑盒子化时会破坏断点?

1 个答案:

答案 0 :(得分:0)

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

我重新阅读了你的帖子,你提到'调试器断点被击中'。我现在认为这意味着一个显式断点,如源代码中的debugger;语句或Dev Tools中的一组(通过单击行号),并且事件监听器断点是无关紧要的。

如果库中有一个debugger;语句是黑盒子的,那么断点仍会被命中。您可以通过右键单击语句所在的行号并选择“从不在此处暂停”来禁用断点。

Never pause here

就目前而言,如果你通过Dev Tools在一个黑盒子库中放置一个断点,它仍会在该脚本中断开。它显示了更明确的意图打破代码,而不是第三方留下的东西。您必须禁用或删除它们。

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

  

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

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

事实并非如此。

此处的行为和文档存在不一致之处。我会尝试对此进行更新。