我正在使用 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 获取请求后将其换成真实的图像。但由于这是 SVG,因此没有明确的请求,我最终得到了一个令人讨厌的损坏图像,然后将其替换为真实的图像。
是否有任何事件可以让我知道图像何时完全加载?