Firebugは確かにjavascriptデバッグのための素晴らしいツールです。私はconsole.log()を広範囲に使用します。
Firebug固有のコードを本番環境に残すことができるかどうかを知りたかったのです。ベストプラクティスは何ですか?デバッグコードにコメントしますか?
Firebugは確かにjavascriptデバッグのための素晴らしいツールです。私はconsole.log()を広範囲に使用します。
Firebug固有のコードを本番環境に残すことができるかどうかを知りたかったのです。ベストプラクティスは何ですか?デバッグコードにコメントしますか?
プロダクションコードにconsole.log()呼び出しを残しておくと、InternetExplorerを使用してサイトにアクセスするユーザーにJavaScriptエラーが発生します。それらの人々が追加のデバッグツールを構成している場合、厄介なダイアログボックスまたはポップアップが表示されます。
クイック検索により、Firebugコンソールが存在するかどうかを検出する方法について説明しているこのスレッドが明らかになりました:http://www.nabble.com/Re :-detect-firebug-existance-td19610337.html
以前にこれに噛まれました。理想的には、すべてのconsole.logステートメントを本番環境の前に削除する必要がありますが、これはエラーが発生しやすく、開発者は常にFF+Firebugでテストすることを忘れるかテストするだけです。
考えられる解決策は、ダミーのコンソールオブジェクトがまだ定義されていない場合は、それを作成することです。
if( typeof window.console == 'undefined'){
window.console = {
log:function(){}
};
}
注意点:10.4のSafariの場合、コンソールオブジェクトはMac OSダッシュボードウィジェットで使用される予約済みオブジェクトであるため、console.logを呼び出すとセキュリティ例外がスローされていました。これがもう当てはまるかどうかわからないので、今夜チェックします。
個人的には、少し前にコンプレッサーを変更して、事前圧縮されたコンソール参照を削除しました。そこに正規表現を追加する数分で、面倒な作業を一生節約できます。
jsのデバッグに本当に良いヒントを追加すると思っただけです。キーワード「debugger」を使用すると、コードのブレークポイントのように、firebugがそれを検出します。MSIE(ビジュアルスタジオがある場合)もそれを検出します。そのブレークポイントを言います。
これについて知っている人はあまりいないようですが、非常に貴重であることがわかりました...コードを実行しているマシンにデバッガーがインストールされていない場合も、何も起こらず、コードは正常に処理されます。そのままにしておくことはお勧めしませんが。
一部のコンプレッサーは、接頭辞;;;が付いている行をすべて削除します。(これは、3つの空のステートメントである、正当なシーケンスです。)このように、コンソール参照に厳密に制限されません(つまり、いくつかの計算を実行し、最後に結果をconsole.log()することができ、コンプレッサーは次のことができます。それらをすべて取り除きます。)これにはJavaScript::Minifierを使用します。
これが原因で多くの頭痛がしました。
私はconsole.log()をよく使用しますが、最近まで、firebugを使用していないバージョンのFFではJSコード全体が失敗することがわかりました。
私は通常、ライブに移行してコメントアウトする前に検索を実行します。
D
私はこれをOOPJavascriptで使用し、firebugが存在することをチェックするログ用の独自のラッパーを作成します。
myclass.prototype.log = function()
{
if( typeof window.console != 'undefined' )
{
console.log.apply( null, arguments );
}
}
電話するだけです:
this.log( arg1, arg2, ...)
IE Dev Toolはconsole.logのapply()をサポートしていないことを思い出してください。
console.log.apply()を呼び出すと、開発ツールがアクティブなときにIE8で例外が発生します。
JavaScriptデバッグを試すことができます。これは、console.logの単純なラッパーです http://benalman.com/projects/javascript-debug-console-log/