如何在 Google Chrome 的内联 Javascript 中设置断点?

IT技术 javascript debugging google-chrome
2021-01-15 05:06:29

当我在谷歌浏览器中打开开发人员工具时,我看到了各种功能,如配置文件、时间线和审核,但缺少基本功能,例如能够在 js 文件中以及在 html 和 javascript 代码中设置断点!我尝试使用 javascript 控制台,它本身就有问题——例如,一旦遇到 JS 错误,除非我刷新整个页面,否则我无法摆脱它。有人可以帮忙吗?

6个回答

您是在谈论<script>标签内的代码,还是像这样的 HTML 标签属性中的代码?

<a href="#" onclick="alert('this is inline JS');return false;">Click</a>

无论哪种方式,这样debugger关键字都会起作用:

<a href="#" onclick="debugger; alert('this is inline JS');return false;">Click</a>

注意debugger如果开发工具没有打开,Chrome 不会在s 处暂停


您还可以在 JS 文件和<script>标签中设置属性断点

  1. 单击选项卡
  2. 单击“显示导航器”图标并选择一个文件
  3. 双击左边距中的行号。相应的行将添加到Breakpoints面板 (4)。

在此处输入图片说明

在 Scripts 选项卡下的下拉列表中,我只看到列出的 JS 文件,而不是包含我要调试的 <script> 标记的 HTML 文件。FF 上的 Firebug 有一个类似的下拉菜单,但也列出了包含 <script> 标签的 HTML 文件。这是一个错误还是有另一种方法可以在内联的 JS 代码中设置断点?
2021-03-20 05:06:29
没有脚本选项卡。我看到这张图片中的所有其他选项卡,但没有脚本选项卡!。
2021-03-25 05:06:29
我的意思是能够在 html 的脚本标签内设置断点。我也尝试使用调试器;关键字,但它不起作用。Chrome 不会断点,但它可以在 Firefox 中工作。我正在寻找不基于 debugger 关键字的断点解决方案,这不方便在代码中放置很多地方然后不得不删除。
2021-03-27 05:06:29
该选项卡被调用Sources而不是Scripts现在。
2021-04-08 05:06:29
当我尝试调试我的 html 嵌入式 js 时,我的开发区出现了一个空白页面。我必须在查看空白源文件时刷新才能填充它。
2021-04-10 05:06:29

使用源选项卡,您可以在 JavaScript 中设置断点。在其下方的目录树中(其中带有向上和向下箭头),您可以选择要调试的文件。您可以通过按同一选项卡右侧的恢复来摆脱错误。

即使在添加 type="text/javascript" 后我也看不到
2021-03-21 05:06:29
除了在 HTML5 中这个属性不再是强制性的。我不是为了调试而更改源代码!
2021-03-27 05:06:29
如果这不起作用,并且您有内联 javascript 代码,例如:<script> your code </script>添加一个名称,例如:<script> your code //# sourceURL=somename.js </script> 这在下面的答案中有更好的解释
2021-03-31 05:06:29
@ulu,我遇到了同样的问题。确保在 <script> 元素上设置了 type="text/javascript" 属性。
2021-04-03 05:06:29
出于某种原因,我看到了包含的 js 文件列表,但我无法选择执行页面本身,它没有显示在列表中。有任何想法吗?
2021-04-10 05:06:29

您还可以为脚本命名:

<script> ... (your code here) //# sourceURL=somename.js </script>

当然,将“somename”替换为某个名称;) 然后您将在 Chrome 调试器中的“Sources > top > (no domain) > somename.js”中看到它作为普通脚本,您将能够像其他脚本一样调试它

如果可以的话,我会给你 1000 票;) 非常有用的技巧
2021-03-19 05:06:29
我使用了这个(好的)想法,但在源选项卡中看不到新文件,只有 html 文件。然后我执行了代码,最后,在控制台中,在脚本编写的任何消息的右侧,您可以看到代码的链接。最好的部分是该链接显示了您为脚本提供的文件名(即,//# sourceURL=somename.js)。
2021-04-04 05:06:29
天哪,你不知道这对我有多大帮助。哦,天哪,这太棒了。多年来,我一直在寻找这样的东西。
2021-04-07 05:06:29
@ZameerFouzan,为什么需要将其从生产中删除?任何真正的副作用?
2021-04-13 05:06:29
最简单和完美的方式去。但请注意其他人,请记住在将其投入生产之前将其删除。
2021-04-14 05:06:29

刷新包含脚本的页面,同时在脚本选项卡上打开开发人员工具。这将在文件列表中添加一个(程序)条目,该条目显示页面的 html,包括脚本。从这里您可以添加断点。

谢谢!使用 Chrome 69,即使我不在源选项卡中也能正常工作。在页面加载时打开开发人员工具似乎是关键。
2021-03-19 05:06:29
如果这是我的问题,这将是公认的答案。谢谢你。
2021-03-19 05:06:29
在 Chrome 83 中工作。在我的环境中,文件名基于您的应用程序的 URL。例如,如果 URL 是 example.com/xxx/yyy,则文件名将为“yyy”。
2021-03-26 05:06:29
这对我不起作用。相反,我单击了右下角的脚本错误图标以在脚本选项卡中打开程序文件。
2021-04-03 05:06:29

另一个直观的简单调试技巧,尤其是 ajax 返回的 html 中的脚本,是将 console.log("test") 临时放在脚本中。

触发事件后,打开开发人员工具中的控制台选项卡。您将看到源文件链接显示在“测试”调试打印语句的右侧。只需单击源(类似于 VM4xxx),您现在就可以设置断点。

PS:此外,如果您使用的是 chrome,您可以考虑放置“调试器”语句,就像@Matt Ball 所建议的那样