2007年11月22日 06:30 [Edit]

google-code-prettify vs IE 6

以前から導入していたgoogle-code-prettifyですが、どうもIE 、少なくとも6ととても相性が悪いことが判明したので、IEの場合は無効になるようにしました。


具体的には、

<script>prettyPrint();</script>

となっていた箇所を、

<script>if (1 /*@cc_on -1 @*/) prettyPrint();</script>

としました。

きっかけは、CrossOver Macの体験版を使って Windows IE 6を使って本blogをながめていた時。かなり込み入ったJavaScriptがあるページでも期待どおり動いているのに、手製のJavaScriptが全くないページでerror 8004004なるエラーがでて、ページ表示不能に。

で、調べてみると、共通しているのは<pre class="pretty">があるページばかり。もしやと思って上を試してみたら、謎の8004004はぴったりと収まったというわけです。最新版のgoogle-code-prettifyにはIE6を検出するコードはあれど、最新版に差し替えても駄目。google-code-prettify単体ではテストページできちんと動いているみたいなので、他と干渉しているか、あるいはonloadより前にprettyPrint()を呼ぶのがいけないのか。

しかし、error 8004004ってユーザーを莫迦にするにもほどがある。すでにIE6は本blogではマイノリティですが、Firefoxを一押しするためにサイドバーを少しいじりました。

やれやれ。

Dan the IEPhobia


この記事へのトラックバックURL

この記事へのトラックバック
n46さんに指摘いただいて調査した結果、google-code-prettifyとIEの相性が悪いことが判明。 結局IEのみgoogle-code-prettifyを使用しないように逃げたのですが、以下悪あがきした経緯を書いておきます。 コード...
[未解決]google-code-prettifyを使用するとIEで改行が表示されない【Web 酒 肴】at 2008年02月21日 16:07
この記事へのコメント
確認してませんが、公式サイト通りonloadで呼ぶようにすれば良いのでは?
Posted by 通りすがり at 2008年02月27日 17:03
同じ症状を経験して、僕もIE6だけgoogle-code-prettifyをoffにしました。

詳しくはわかりませんが、prettyPrintした後に、IE6だとpre要素の中の改行が消えてしまうのが原因だったりしませんか?
Posted by LiosK at 2007年11月22日 23:29