[解決済み] WebKit、FireBug、IE8 Developer Toolなどのデバッガで動的ロードのJavaScriptをデバッグできますか?
質問
から 最近の質問 のように、部分ビューを動的にロードするためのJavaScript関数をすでに作成しました。そのため、動的ロードのJavaScriptをデバッグすることができません。なぜなら、読み込まれたJavaScriptはすべて"eval"関数によって評価されるからです。
しかし、以下のスクリプトを使用することで、新しいJavaScriptを作成する方法を発見し、現在のドキュメントのヘッダーに動的にスクリプトを作成しました。読み込まれたスクリプトはすべてHTML DOMに表示されます(デバッガを使えば見つけることができます)。
var script = document.createElement('script')
script.setAttribute("type","text/javascript")
script.text = "alert('Test!');";
document.getElementsByTagName('head')[0].appendChild(script);
ところで、ほとんどのデバッガー(IE8 Developer Toolbar、Firebug、Google Chrome)は、動的スクリプトにブレークポイントを設定することができません。なぜなら、デバッグ可能なスクリプトは、ページがロードされた後、最初にロードされなければならないからです。
動的なスクリプト コンテンツまたはファイルでのデバッグのためのアイデアはありますか?
更新1 - テスト用ソースコードの追加
someVariableの値をデバッグしようとする場合、以下のxhtmlファイルを使用することができます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Dynamic Loading Script Testing</title>
<script type="text/javascript">
function page_load()
{
var script = document.createElement('script')
script.setAttribute("id", "dynamicLoadingScript");
script.setAttribute("type","text/javascript");
script.text = "var someVariable = 0;\n" +
"someVariable = window.outerWidth;\n" +
"alert(someVariable);";
document.getElementsByTagName('head')[0].appendChild(script);
}
</script>
</head>
<body onload="page_load();">
</body>
</html>
回答から、FireBugでテストしてみました。結果は、以下の画像のように表示されるはずです。
ページロード後に追加される "dynamicLoadingScript" スクリプトをご覧ください。
しかし、FireBug の script タブに表示されません。
更新2 - ダイナミックロードスクリプトにデバッグブレークポイントを作成する
上の画像は両方とも、スクリプトのいくつかの行に "デバッガー "ステートメントを挿入すると、動的ロード スクリプトでブレークポイントを発生させることができることを示しています。しかし、両方のデバッガーは、ブレーク ポイントにコードを表示しません。したがって、これを行うには無駄です。
ありがとうございます。
どのように解決するのですか?
クロームを使用して同じことを行うことも可能です。Chrome にはパーサー属性を指定する機能があり、動的 JS の一部をファイルとして表示させ、それを参照してブレーク ポイントを設定することができます。
設定する必要がある属性は
//# sourceURL=dynamicScript.js
ここで、dynamicScript.jsはスクリプトファイルブラウザに表示されるべきファイルの名前です。
その他の情報 はこちら
Paul Irish もまた、このことについて ツーリングとウェブアプリ開発スタック
関連
-
[解決済み] JavaScript / jQuery のイベントバインディングを Firebug などでデバッグするには?
-
[解決済み】スクリプトの読み込みと実行順序について
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Chromeの開発ツールです。[VM] javascriptからファイル
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] 変異を伴わないオブジェクトからの値の削除
-
[解決済み] ブラウザのデバッガで、動的にロードされたJavaScript(jQuery)をデバッグするには?