IEでは昔はconsole.logの機能が使えず、JavaScriptのデバッグは大変だった。しかしIE8あたりからはconsole.logも実装され、随分使い勝手がよくなったらしい(といっても最終的な確認程度にしか使わないのだけれど)。しかし、それでも問題が生じた。
グラフ描画ライブラリjqPlotはjQueryプラグインとして使うことができる高機能なグラフ描画ライブラリだ。そしてIEでも使用可能。そういう情報を得たのでとあるクライアントの案件で試用してみた。現在はMac環境で普段IEに接することがないのだが、クライアント先でデモをしていてびっくり!。IEでグラフ表示できてないじゃん!。
その場は「あー、IE対応してなかったかも・・・とりあえず他のライブラリ探してみますねー」とその場は別のブラウザで確認していただいた。解せない、どうも解せない。再度調べたがやっぱりjqPlotはIE9では動くことになっている。しかももうちょい古いバージョンでもOKとなっている。なぜだー。
気を取り直して、Windowsを起動。ひょっとしてうちのPCだと大丈夫だったりして、と思ったので試してみたけどやっぱり表示されない。ショック大。その時思ったのは「あ、ひょっとして配列の最後の要素の後ろにもカンマつけちゃっててIEでエラーになったんじゃ・・・」。で、F12でコンソールを起動してみた。そしたらびっくり。ちゃんと表示された!。
色々試してわかったことは、IEを起動して一度でもコンソールを起動すれば、以降はちゃんとグラフが表示される(仮にコンソールを閉じたとしても)。しかしIE起動後一度もコンソールを開かないままにグラフを表示させようとするとやっぱりダメ。そしてその場合は他のJavaScriptも動いていないことがわかった。
原因は、JavaScript内部でデバッグ用に残っていたconsole.log()関数だった。この関数を残しておくとIEでは基本的に(コンソールログを開かない限り)エラーになる模様。印象としては「console.logしてるのにコンソールが開いていないから詰まっちゃった」みたいな感じだろうか。何はともあれ、console.log()の部分を削除してIE9でも正常に動作することを確認できた。
ちょっと安心、ちょっとショック。納品の際はconsole.logをうっかり残してしまわないよう注意しなくては・・・。