2012-02-01 10 views
3

私はIE9を使用していて、いくつかのjavascriptをデバッグしようとしています。 console.log()は、開発者用ツールが開いているときに警告を鳴らすのではなく、コンソールに実際にログすることがあります。console.logはie9でアラートを使用し、開発者ツールを開いて開きます

ただし、開発ツールを開いていて、console.logに警告が表示されています。私は何が欠けていますか?


  • ブラウザモード:IE9互換モード
  • ドキュメントモード:IE8標準
+1

私は** never **(IE6の開発者ツールでさえ)に 'console.log()'が 'alert()'を作成しているので、テストケースを用意する必要があります。私の経験から、もしツールが開いていなければ、 'console'はツールが開いていなければ、定義されていないので、' console.log() 'はエラーを投げます。 –

答えて

1

私はにconsole.logはあなたのJSのどこかで再定義されているかどうかを確認することになります。

0

console.log()alert()私はあなたのコードでカスタムconsole.log-functionを使用していると思います。しかし、私はいつもhtml5boilerplateに同梱されているこれらの小さな関数を使用することをお勧めしたい:

// usage: log('inside coolFunc', this, arguments); 
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ 
window.log = function f(){ log.history = log.history || []; log.history.push(arguments); if(this.console) { var args = arguments, newarr; args.callee = args.callee.caller; newarr = [].slice.call(args); if (typeof console.log === 'object') log.apply.call(console.log, console, newarr); else console.log.apply(console, newarr);}}; 

// make it safe to use console.log always 
(function(a){function b(){}for(var c="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),d;!!(d=c.pop());){a[d]=a[d]||b;}}) 
(function(){try{console.log();return window.console;}catch(a){return (window.console={});}}()); 

は、それらを使用し、それらを含めると、あなたは、IEでのデバッグ出力に起因するすべてのエラーを持っていないでしょう。

0

console.logがページ上のスクリプトによって書き換えられている可能性があります。このalertの動作が、現在テストしているすべてのサイトまたはこのサイトだけに出現したかどうかをテストします。 (それはどこでも起こるない場合、多分console.logは、ブラウザのアドオンによって書き換えられている。)

(ピンチで、あるいはconsole.error)の代わりにconsole.warnを使用してみてください - 予想通り、おそらくそれはまだ動作します。これは良いサニティチェックで、console.logが動作しない場合は、出力をデバッグすることができます。

関連する問題