Javascript 加载繁重的png图像时加载Gif
我将服务器端PHP脚本(图表)生成的png图像加载到HTML IMG元素Javascript 加载繁重的png图像时加载Gif,javascript,jquery,Javascript,Jquery,我将服务器端PHP脚本(图表)生成的png图像加载到HTML IMG元素 PNG图像生成和下载大约需要1秒,所以我想在加载图像时显示gif加载程序。如何使用JS实现此功能?如果浏览器缓存了它,您可以向查询字符串中添加一些内容来打破它。无论哪种方式,您都需要侦听图像的load事件,在设置其src之前,应先绑定该事件(如果已缓存): $('#chart').attr('src', 'chart.php').load(function(){ //something }); 参考: 请注
PNG图像生成和下载大约需要1秒,所以我想在加载图像时显示gif加载程序。如何使用JS实现此功能?如果浏览器缓存了它,您可以向查询字符串中添加一些内容来打破它。无论哪种方式,您都需要侦听图像的load
事件,在设置其src
之前,应先绑定该事件(如果已缓存):
$('#chart').attr('src', 'chart.php').load(function(){
//something
});
参考:
请注意该参考底部附近的注意事项,涉及处理图像时的事件:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地在DOM树上冒泡
- 对于已经存在于浏览器缓存中的图像,可以停止激发
如果浏览器缓存了它,您可以向查询字符串中添加一些内容来打破它。无论哪种方式,您都需要侦听图像的load
事件,在设置其src
之前,应先绑定该事件(如果已缓存):
参考:
请注意该参考底部附近的注意事项,涉及处理图像时的事件:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地在DOM树上冒泡
- 对于已经存在于浏览器缓存中的图像,可以停止激发
对于平衡,这在普通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?_...');
对于balance,这在普通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?_...');
非常感谢你!我是这样实现的:$('#ajax loader').attr('src','ajax loader.gif')$(“#图表”).hide()$('#chart').attr('src',linkUrl).load(function(){$('#ajax loader').hide();$('#chart').show();})代码>非常感谢!我是这样实现的:$('#ajax loader').attr('src','ajax loader.gif')$(“#图表”).hide()$('#chart').attr('src',linkUrl).load(function(){$('#ajax loader').hide();$('#chart').show();})代码>顺便说一句,您显示的代码是jquery语法而不是javascript,但是您的问题中没有jquery标记。那么您想要一个javascript或jquery答案吗?顺便说一句,您显示的代码是jquery语法而不是javascript,但是您的问题中没有jquery标记。那么你想要一个javascript或jquery答案吗?很高兴看到有人使用纯javascript,作为一个提示,你可能会更好地使用更现代的“addEventListener”来支持“onload”。@Xotic750为什么你希望使用香草javascript来实现类似的功能呢?在这个答案中,onload
甚至没有得到正确的实现。不是每个人在编写代码时都可以或希望包含jquery或其他库。是的,他在“onload”用法上有问题。修复了onload声明-仓促键入onload
在DOM级别1的任何地方都能工作,addEventListener
不会(这里主要考虑的是遗留IE),在这种情况下,除了感觉更现代之外,它更多的是输入,没有任何好处。这是真的,新方法的优点是在支持的地方,速度更快。很高兴看到有人使用纯javascript,请注意,您可能会更好地使用更现代的“addEventListener”来支持“onload”。@Xotic750为什么您希望使用香草javascript来实现类似的功能?在这个答案中,onload
甚至没有得到正确的实现。不是每个人在编写代码时都可以或希望包含jquery或其他库。是的,他在“onload”用法上有问题。修复了onload声明-仓促键入onload
在DOM级别1的任何地方都能工作,addEventListener
不会(这里主要考虑的是遗留IE),在这种情况下,除了感觉更现代之外,它更多的是输入,没有任何好处。这是真的,新方法的优点是在支持的地方,速度更快。