D3.js を使用して、ラスター イメージを含むノードでグラフをレンダリングしています。
var mainscreenURL = s3_base_url + viewController + "/screenshot.jpeg";
svg.select(".mainScreen").transition().attr("height",0).remove();
svg.append("image").attr("xlink:href", mainscreenURL)
.attr("width", mainScreenW)
.attr("height", mainScreenH)
.attr("x", (w / 2) - (mainScreenW / 2))
.attr("y", (h / 2) - (mainScreenH / 2))
.attr("class", "mainScreen")
.attr("id", viewController)
});
これらの画像の一部は非常に大きいため、HTTP 要求 (ブラウザーによって暗黙的に行われる) にはかなりの時間がかかる場合があります。画像は動的に生成されるため、キャッシュできません。
これが通常の HTML である場合は、プレースホルダーの画像を表示し、HTTP の get 要求が正常に完了すると、実際のものと交換します。しかし、これは SVG であるため、明示的な要求はなく、最終的には厄介な壊れた画像になり、それが実際のものに置き換えられます。
イメージが完全に読み込まれたときにフックできるイベントはありますか?