假设我们有一个包含此内联脚本的网页:
<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 将在后台加载外部脚本,以便它最终出现在开发工具中。一旦完成,就可以在该脚本中设置一个断点,然后继续执行到该断点。
最佳答案
现在已实现,您可以在脚本 部分下的事件监听器断点 中打开脚本第一语句。
关于javascript - 如何在动态添加的 JavaScript 文件开头暂停执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847350/