2009-05-27 13 views

答えて

14

は、その後、Internet Explorerを使用して、サイトを訪れた人は、JavaScriptのエラーを持っています。これらの人に余分なデバッグツールが設定されていると、不快なダイアログボックスやポップアップが表示されます。 http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html

2

私はこれによって多くの頭痛を起こしました。

私はconsole.log()をたくさん使っていますが、最近までFirebugを使用していないFFのバージョンではJSコード全体が失敗することが判明しました。

私は通常、ライブに行く前にfindを実行し、コメントアウトします。あなたは()本番コードで呼び出すにconsole.logを残す場合は

D

14

はこの前にかまれ:

クイック検索

は、Firebugのコンソールが存在するかどうかを検出する方法を議論し、このスレッドを明らかにしました。理想的には、すべてのconsole.logステートメントを製造前に削除する必要がありますが、これはエラーが発生しやすく、開発者は常にFF + Firebugで忘れるかテストするだけです。

考えられる解決策は、ダミーコンソールオブジェクトがまだ定義されていない場合は作成することです。注意の

if(typeof window.console == 'undefined'){ 
    window.console = { 
     log:function(){} 
    }; 
} 

一言:それはコンソールオブジェクトは、Mac OS Dashboardウィジェットで使用される予約対象であるようにconsole.logする任意の呼び出しがセキュリティ例外をスローすることを10.4上のSafariのためのケースのように使用。これが今の場合は確かではない、今夜チェックする。

+0

ためだ単純なラッパーであります最近のバージョンをサポートしている場合は問題ありません。 – ajm

+0

これはあまりにも長い間壊れていないと考えている –

8

個人的に私はコンプレッサーを少し前に修正して、コンソール参照をあらかじめ圧縮しています。数分で正規表現を追加すると、生涯の手間が省けます。

+0

これはコードをコードではなく*テキスト*として扱うので、一般的に危険です。したがって、var a = console; a.log( "test" ); 'はまだエラーをスローします。もちろん、そのような参照は行われませんが、より良い解決策が存在するため(上​​記参照)、これは賢明ではないようです。 –

3

jsのデバッグには本当に良いヒントを追加したいと思っていました....キーワード "debugger"を使用し、コード内のブレークポイントを使用して、FirebugはMSIEも検出します私はそのブレークポイントを言う。

これについて多くの人が知っているようですが、私はinvalubleを見つけました...また、コードを実行しているマシンにデバッガがインストールされていないと、何も起こりません。私は彼らをそこに残すことを勧めませんが。

2

一部のコンプレッサーは、;;;で始まる行を削除します。 (これは、3つの空文である正当なシーケンスです)。この方法では、コンソール参照に厳密に限定されません(つまり、いくつかの計算を行い、最後にconsole.log()することができます)すべてを取り除きます)。これにはJavaScript::Minifierを使用します。

私は放火犯が存在することを確認し、ログのための私自身のラッパー作り、OOP JavaScriptでこれを使用
1

myclass.prototype.log = function() 
{ 
    if(typeof window.console != 'undefined') 
    { 
     console.log.apply(null, arguments); 
    } 
} 

するだけで呼び出す:

this.log(arg1, arg2, ...) 
0

IEのDevツールがサポートされていないということだけでリマインダーconsole.logにapply()を実行します。

devツールがアクティブな場合、console.log.apply()を呼び出すとIE8で例外が発生します。

関連する問題