ブラウザーのデバッガー自体で動的に読み込まれたJavaScript(jQueryを使用)をデバッグする方法は?


92

動的に追加されたスクリプトが、ブラウザーのデバッガーのスクリプトセクションに表示されません。

説明:

私は使用する必要があり、使用しました

if( someCondition == true ){
   $.getScript("myScirpt.js", function() {
       alert('Load Complete');
       myFunction();
   });
}

したがって、myScript.jsは、ある条件を満たすときに動的にロードできます...そして、myFunctionは、スクリプト全体をロードした後でのみ呼び出すことができます...

ただし、ブラウザーのデバッガーのスクリプトセクションに動的に読み込まれたmyScript.jsが表示されません。

ブラウザー自体で動的に読み込まれたスクリプトをデバッグできるようにするすべての目標を達成できるように、別の方法がありますか?



2
debugger;動的に読み込まれるスクリプトで自動停止するために使用します。javascript.info/ debugging
yu yang Jian

回答:


208

動的に読み込まれるスクリプトに名前を付けて、Chrome / Firefox JavaScriptデバッガーに表示されるようにすることができます。これを行うには、スクリプトの最後にコメントを配置します。

//# sourceURL=filename.js

このファイルは、[ソース]タブにとして表示されfilename.jsます。私の経験では、名前に\を使用できますが、/を使用すると奇妙な動作になります。

詳細については、// @ sourceurlの非推奨のダイナミックJavaScriptのブレークポイントを 参照してください。


19
// @はChromeでも機能しますが、//#に変更されていることに注意してください。.htmlファイル内のスクリプトにも同じ方法で名前を付けることができます。注意してください!「=」記号の前後に空白を残さないでください。
Mert Mertce 2013年

11
私にとって、jsファイルは「(ドメインなし)」というグループ内のソースリストに表示されていました。私は最初にそれを逃したので、言及する価値があるかもしれません!
JMac 2015年

7
ほんのヒント。Chromeデバッガーは、少なくともlocalhostでデバッグするときに、[ソース]タブの「(ドメインなし)」ノード要素にこれらの疑似JavaScriptファイルをスローします。それは私がそれらを見つけた場所です。
ロバートオシュラー16

1
もう1つ注意が必要なのは、コメントスタイルです。あなたが与えたその「deprecation of / / @ sourceURL」リンクは「//#sourceURL = "と" / *#sourceURL = "の両方に言及しています。これは、単一行の「//」コメントが無効であるため、ブロックコメントを使用する必要があるCSSにも使用できるためです。私を驚かせたのは、JavaScriptで "/ * sourceURL ="を使用できないことです。無視されます。
Jools、2018年

2
Afaik、ほとんどのJavaScriptミニファイアはこれらの行を本番段階から削除しているため、本番バグの診断には役立ちません。
リュイスSuñol

16

あなたは使用することができます//# sourceURL=し、//# sourceMappingURL=あなたのスクリプトファイルまたはスクリプトタグの終わりに。

注: //@ sourceURLおよび//@ sourceMappingURLは非推奨です。


その他の非推奨情報:developers.google.com/web/updates/2013/06/...
Pysis

確かに、しかし大抵の縮小版は生産段階でこのラインを削除します。
リュイスSuñol

13

OPによって回避策として提案された「//#sourceURL = filename.js」を使用しようとしましたが、前回のタブにすでに存在していた場合を除き、[ソース]パネルに表示されませんでした。例外が発生しました。

「デバッガ」のコーディング 線がその位置で強制的に切断しました。次に、[ソース]パネルのタブに表示されたら、通常のようにブレークポイントを設定して、「デバッガ」を削除しました。ライン。


6
また、[ソース]タブの(ドメインなし)リストにも表示される場合があります。
Splaktar 2014

1
またdebugger;、を使用する必要があり、スクリプトのロード中にDevToolsを開く必要がありました。
Barmar

1
少し余分な情報:次のようにプロトコルとしてbrowsertools://を使用してください //# sourceURL=browsertools://yourdomaingoeshere.com/action-openuwws.js
dolbysurnd

6

この方法で[ソース]タブに表示されるソースファイルは(ドメインなし)グループに表示されます。デバッグする場合debugger;は、コードに行を追加し、その行を実行する必要があります(通常はソースファイルの実行の開始)を指定し、必要に応じてブレークポイントを追加します。

debugger;コードに行がない可能性がある本番段階をデバッグしている場合は、CharlesProxyでローカルマップを実行して、「debbuger行が挿入されたソースファイルの新しいコピー」にこれを行うことができます。


2
これは私を救った!何をしても、デバッガコマンドを入力するまでファイルは表示されませんでした。その後、デバッガーコマンドを削除した後でも、ページの再読み込みとデバッグセッション全体で永続化しました。
Mike Devenney 2017年

0

このようなことをIEで追跡する場合、開発ツール(F12)を開き、コンソールで次の行を使用してブレークポイントを配置する場所を見つけます。

debugger;myFunction();

これにより、デバッガータブに切り替わりmyFunction()、ブレークポイントにステップインして設定できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.