Debugger.scriptParsed
イベントが見つかりました。各スクリプトのscriptId
を生成するものです。解析された各スクリプトファイルはイベントを発生させ、一意のIDを受け取る必要があります。個々のスクリプトファイルだけでなく、ページソース内の<script>
タグの各インスタンスも独自のIDを取得します。
イベントコールバックにはいくつかのパラメータが渡されます。 arguments
オブジェクトをログアウトすることによって、すべての引数を検査できます。たとえば、スクリプトファイルの場合はurl
が返され、startLine
の場合は、HTMLリソースに表示される<script>
タグのオフセットが得られます。
on('Debugger.scriptParsed', function() {
console.log(JSON.stringify(arguments, null, 2)(
});
調査
あなたの更新の質問への応答では、私の理解では、デバッガモードでは、完全な解析を試みますし、事前に解析して最適化しようとしないということです。私はv8のコードベースを実際に理解することができませんでしたが、私は少しテストを行いました。
ボタンと別のスクリプトファイルでHTMLページを作成しました。私はページロードの直後に1つの関数を実行しました。ボタンをクリックすると、別の機能が実行されます。
document.addEventListener("DOMContentLoaded",() => {
document.getElementById('clickMe').addEventListener('click',() => clicked);
});
私はDebugger.scriptParsed
からの出力を検査しました。それはすぐにスクリプトファイルを解析しました。ボタンをクリックすると、追加の出力エントリはありませんでした。 eval
を使用して動的に呼び出されるclicked
を呼び出すようにハンドラーを変更した場合、新しいスクリプトチャンクが出力されました。
eval('clicked()');
これは、パーサが実行されるまでそれを知る方法がないため意味があります。同じことがインラインハンドラにも当てはまります。 onclick="doSomething()"
他のチャンクはChromeの拡張機能のURIと内部のURIです。
この関数は、単に[idによってスクリプトを取得する](https://cs.chromium.org/chromium/src/v8/src/inspector/v8-debugger-agent-impl.cc?l=662&rcl=f212dbeaa1c0b0c97ef1d01c4cf61a2d920157b8) 。ですから、V8エンジンがソースコードから推測できるIDをどのように割り当てるのでしょうか。 – wOxxOm