このインラインスクリプトを含むWebページがあるとしましょう。
<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の開発ツールに指示するにはどうすればよいですか?「ステップオーバー」コマンドは、同じコールスタック内でのみ機能します。
これが必要な理由:(これは単なる背景です。これを読む必要はありません。)W3CのHTML5 404ページには、ページの読み込み時に呼び出される関数を含むスクリプトが含まれています。fixBrokenLink
次に、この関数はfragment-links.jsスクリプトをページに動的に追加します。そのスクリプトをステップスルーしたいと思います。私の目標は、そのスクリプトが「壊れたリンクを修正する」方法を理解することです。もちろん、そのスクリプトを静的に分析することもできますが、実行中にコードをステップ実行することで、開発ツールを介してライブで実行したいと思います。それが可能だと思わなければ、私はわざわざこの質問をすることはありません。
ソリューション:
受け入れられた答えから明らかでない場合は、document.body.appendChild(script);
ステートメントをステップオーバーするだけで、最後の括弧で実行が一時停止され}
ます(上記のコードを参照)。その時点で、Chromeは外部スクリプトをバックグラウンドでロードするため、最終的には開発ツールに表示されます。完了したら、そのスクリプトにブレークポイントを設定し、そのブレークポイントまで実行を再開できます。