javascript - 如何在动态添加的 JavaScript 文件开头暂停执行?

标签 javascript debugging google-chrome-devtools

假设我们有一个包含此内联脚本的网页:

<script>
(function () {
    var script = document.createElement('script');
    script.src = 'http://remote.com/external.js';
    document.body.appendChild(script);
}());
</script>

如您所见,一个外部脚本 external.js 附加到页面。

我想在该外部脚本的开头暂停执行。我无法编辑该外部脚本。 (如果是,我会在该文件的顶部插入一个 debugger; 语句。)

我目前正停在(上述脚本的)这条语句上:

document.body.appendChild(script);

页面上没有其他 SCRIPT 元素,因此,如果我恢复执行,下一条要执行的语句将是外部脚本的第一条语句。

如何命令 Chrome 的开发工具在下一条语句处暂停执行? “Step over”命令仅在同一调用堆栈中有效。

为什么我需要这个:(这只是背景。您不需要阅读它。)W3C 的 HTML5 404 页面包含一个 script with a fixBrokenLink function在页面加载时调用。然后此函数动态添加 fragment-links.js脚本到页面。我想单步执行该脚本。我的目标是了解该脚本如何“修复损坏的链接”。当然,我可以静态地分析该脚本,但我更愿意通过开发工具实时分析它,在它执行时单步执行它的代码。如果我认为这是不可能的,我就不会问这个问题。


解决方案:

如果接受的答案不清楚,只需跳过 document.body.appendChild(script); 语句,以便在右大括号 处暂停执行}(见上面的代码)。届时,Chrome 将在后台加载外部脚本,以便它最终出现在开发工具中。一旦完成,就可以在该脚本中设置一个断点,然后继续执行到该断点。

最佳答案

现在已实现,您可以在脚本 部分下的事件监听器断点 中打开脚本第一语句

enter image description here

关于javascript - 如何在动态添加的 JavaScript 文件开头暂停执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847350/

相关文章:

debugging - 调试器在 chrome/safari/firefox 中无法用于 ember 应用程序

javascript - 根据数据属性将列表项分组为子列表

c++ - valgrind 显示调试结果,但结果不对

asp.net - 如何理解 google chrome 中针对 Asp.net 提供的静态资源的安全警告

java - jdb 调试时烦人的包名

delphi - 为什么断点去掉后没有消失

google-chrome - 在 Chrome Devtools 中添加侧边栏 - 网络 Pane

javascript - 使用 document.getElementsByTagName 遍历 dom 元素,将元素作为 jquery 对象传递

javascript - 使用react-router时无法使用多个布局

javascript - 第一次点击后是否可以更改 iFrame 样式(不在同一域上)