【JavaScript】IE9以前でconsole.logを使用しているとハマる


はじめに

FirefoxとかChromeなら問題ないがIEだと上手く動作しないとかはよくある話だと思う。その要因の一つであるconsole.log使用時のエラーに、つい最近ハマったのでメモしておく。

対処法

そもそもなぜconsole.log使用時にエラーが出るのかといえば、IEがConsoleAPIに対応していないために、window.consoleの時点でundefinedを吐くからである。対処法としては、

// consoleプロパティとlog関数作ってとりあえずエラー回避
if(!window.console) {
  window.console = { log: function(msg){} };
}

とか

// ConsoleAPIに対応していないなら無視
if(window.console && typeof window.console.log === 'function') {
  console.log('hoge');
}

とか。
…まぁ、ちゃんとリリース時にconsole.logを消すのが一番良いのかもしれない。

おわりに

console.logでのエラーのやっかいなところは、 開発者ツールを起動して確認するとうまく動く ところである(IE9,8)。これでハマった。いざデバッグしようとしてF12を押して確認したら「ちゃんと動いてるじゃん」と。逆に言えば、それで原因の特定ができたので良かったといえばよかったのだが。

参考

IEでconsole.log()のエラーを出さないようにする
stackoverflow - 'console' is undefined error for Internet Explorer