2011-10-25 11 views
12

console.logを使用して、プログラムのJavaScript側にログインしようとしています。私は、devのコンソールがIEで開かれていない限り、JSは基本的にconsole.logにヒットすると動作を停止することに気付きました。これは痛みです...つまり、プロダクションビルドをしたいときはいつでもすべてのロギングを削除する必要があります。明らか別にIEの下でコードを破ることなくコンソールにログする方法はありますか?

function DoSafeConsoleLog(parameters) 
{ 
    if (!$.browser.msie) 
    { 
     console.log(parameters); 
    } 
} 

すべての主要なブラウザにやさしいJavaScriptをログに記録するための良い方法はありますか?

EDIT:

まあ、重複したポスト(おっと)を見ているだけでなく、ここで答えを考慮した後、私はちょうど呼び出す前に、コンソールの存在をチェックしなきゃ側をしました。私は余分なマークアップを嫌っていますが、コードをデバッグするためにFirebug Liteを使用したい将来のプログラマーの足跡を歩いているわけではありません。あなたが偽のconsoleを作成することができます

+0

可能重複(http://stackoverflow.com/questions/7585351/testing-for-console-log-statements-in-ie) – zzzzBov

+0

['console'はInternet explorerの定義されていないエラーです。](http://stackoverflow.com/questions/3326650/console-is-undefined-error -for-internet-explorer) – skolima

答えて

9

をIEには独自のコンソールを持っており、あなたは文句を言わないあなたがfirebug liteを使用している場合は、コンソールを無効にしたいです。 、

if (window.console) console.log('foo bar baz', fizz, buzz); 

いっそのショートカットする&&を使用します:ちょうどログが呼び出されたときにコンソールが存在することを確認してください

window.console && console.log('foo bar baz', fizz, buzz); 
+1

「IEには独自のコンソールがありますか?開発者コンソールが開いている場合、コンソールが提供するコンソールはconsole.logにうまく機能します。他のブラウザは、明示的に開いていなくてもコンソールにログオンすることができます。あなたの答えが間違っていると言っているわけではありません。あなたは確かに私が検討している有効なポイントを持っています。 :) –

+0

私は 'window.console && consoleに切り替えました。log() 'を呼び出すと、すべてIEで動作します! – Avishai

+0

ちょうどヘッドアップですが、 'console.log'が生産コードに浸透するのは悪い考えです。 –

15

if (typeof console === "undefined") 
    console = { log: function() { } }; 
+0

[Firebug Lite](http://getfirebug.com/firebuglite)のように、ページロード後に追加されたコンソールをオーバーライドするので、私はこの考えが特に気に入っていません。 – zzzzBov

+0

正直、私は火かぶりライトとたくさん戦って、それを取り除いてしまった。私は、Chromeの開発者用コンソールが私に物事を理解するのに十分であることを発見しました。そして、Firebug Liteはたぶん1日に一度不具合を起こし、閉鎖する必要があります。しかし、ちょうど私の経験。 –

+1

@Sean Anderson、<! - [if IE] - ><! - [ endif] - > 'はIE専用です。 – zzzzBov

0
function log(log){ 
    try{ 
    console.log(log); 
    }catch(err){} 
} 
0

私はfauxconsoleを使用しています。私はCSSが少し改良されているので、見栄えは良くなりましたが、うまく機能します。

1

私はこれを使用するには

if (! ('console' in window)) { 
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd']; 
window.console = {}; 
for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {}; 
}else { 
/*if it exists but doesn't contain all the same methods....silly ie*/ 
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd']; 
for (var i = 0; i < names.length; ++i) if(!window.console[names[i]])window.console[names[i]] = function() {}; 
}; 
0

自分自身をスニペット私は、スクリプト実行の破断を防ぐために、上記の「偽コンソール」を使用することによってそれを解決しました。 それが唯一のInternetExplorerのために含まれては私のhtml頭でこれを含める:[IEではconsole.logステートメントのテスト]の

<!--[if lte IE 10]> 
    <script> if (typeof console === "undefined") console = { log: function() { } }; </script> 
<![endif]--> 
関連する問題