IEでconsole.log()を記載するとエラーになる件とその処方箋


聞いてくれよ

先日Webアプリを作っているとき、妙な現象に悩まされていました。
各種ブラウザのうち、IEでのみ動かない。
原因を調べようと開発者ツールを開くと何故か動く! 👈❓

原因は?

どうやら、IEでは 通常 window.console オブジェクトが生成されない
ソース上の console.log() 行でエラーとなり、処理が中断されてしまう

困ったことに 開発者ツール展開時は window.consoleオブジェクトは生成される ため
デバッグ時は動くという謎の減少に悩まされるのだ

対処法は?

console.log() を削除するか
スクリプト内で console.log() を無効化(無害化)するといい

if (typeof(window.console) === "undefined") {
  window.console = {
    log: function(){}, // 何もしない関数 とする
  }
}

面倒なら、以下のライブラリを導入してください。

(github) tmak-tsukamoto/noop-console.js

とりあえず入れとけ、ってモノにできたと思う
ぜひ導入してね