<img id="chart">
我使用以下 JS 代码将服务器端 PHP 脚本(图表)生成的 png 图像加载到 HTML IMG 元素:
$('#chart').attr('src', 'chart.php');
PNG 图像的生成和下载大约需要 1 秒,所以我想在图像加载时显示 gif 加载器。如何用 JS 实现这个功能?
<img id="chart">
我使用以下 JS 代码将服务器端 PHP 脚本(图表)生成的 png 图像加载到 HTML IMG 元素:
$('#chart').attr('src', 'chart.php');
PNG 图像的生成和下载大约需要 1 秒,所以我想在图像加载时显示 gif 加载器。如何用 JS 实现这个功能?
为了平衡,这在纯 JS 中非常简单:
var preload = function(element, src) {
var img = new Image();
// Apply onload before applying src attribute to avoid IE prematurely firing
img.onload = function() {
// Replace #chart with image
element.parentNode.replaceChild(img, element);
};
img.src = src;
}
preload(document.getElementById('chart'), 'chart.php?_...');
$('#chart').attr('src', 'chart.php').load(function(){
//something
});
如果浏览器缓存了它,你可以在查询字符串中添加一些东西来打破它。无论哪种方式,您都需要侦听图像的load
事件,该事件应在设置之前src
绑定(以防它被缓存):
var target_url = 'chart.php?_=' + (new Date()).getTime();
// Show "loading"
$('#chart').on("load", function () {
// Hide "loading"
}).attr('src', target_url);
参考:
请注意该参考底部附近的警告,指的是使用图像时的事件: