IEでもHTML5のcanvasを使えるようにするexcanvas.js。
jqPlotなどのcanvasなグラフライブラリを使いたいときにはIEのために必須なんですが、何も考えずに使うとハマります。

事象

Flashなしで円グラフを表示する必要があり、 jqPlot + IE対応として excanvas.js を使うことにしました。
実装してテストしたところ、excanvas.jsが効いたり効かなかったりする。
特にはじめてそのページを読み込んだときに効かない確率が高い。
そんな事象になってしまいました。

原因

画面表示時に円グラフを出してしまうため、グラフ描画処理を jQuery の $(document).ready() に書いていました。
これがいけなかったみたいです。
$(document).ready() は excanvas が動作可能になるタイミングよりも早いようです。

対応方法

$(document).ready() ではなく、$(window).load() で処理を行うようにする。

$(document).ready(function() {
:


$(window).load(function() {
:

2012/05/15 追記

excanvasを自力で初期化すれば、jQueryの$(document).ready()を使うことができるらしい。

var canvas = document.getElementById('canvas');
if (typeof G_vmlCanvasManager != "undefined") {
  G_vmlCanvasManager.initElement(canvas);
}
ctx = canvas.getContext('2d');

試してはいない。
情報元 : *** BOKECO MEMO *** : [HTML5][Canvas]IE8に対応したかったんだけど… のコメント
んだけれども、こんなわけのわからんコードは、どうしても $(window).load() じゃダメなシチュエーション(そんなのあるか?)に追い込まれてしまったときの最終手段でよいと思う。