假设我们有一个包含这个内联脚本的网页:
<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 页面包含一个脚本,该脚本具有fixBrokenLink
在页面加载时调用的函数。然后,此函数将fragment-links.js脚本动态添加到页面。我想逐步完成该脚本。我的目标是了解该脚本如何“修复断开的链接”。当然,我可以静态分析该脚本,但我更愿意通过开发工具实时执行它,通过在执行它的代码时单步执行它。如果我认为不可能,我不会费心问这个问题。
解决方案:
如果从接受的答案中不清楚,只需跳过document.body.appendChild(script);
语句,以便在右括号处暂停执行}
(参见上面的代码)。此时,Chrome 会在后台加载外部脚本,最终会出现在开发工具中。一旦完成,就可以在该脚本中设置一个断点,然后继续执行到该断点。