等待添加到CSS的图像加载-JQuery
Wait for image added to CSS to load - JQuery
我有一个图像,我想在上面画画。为此,我使用jQuery隐藏图像:
$("img").hide();
然后我创建一个画布,并将其放在html中id为drawing
的同一div中。然后,我将画布的背景设置为与我隐藏的图像的img src相同。这使它看起来像一幅图像,但现在它实际上是一幅以图像为背景的画布。我通过:
$('#drawing > canvas').css('background-image','url('+$(".image img").attr('src')+')');
context.canvas.width = $("img").width();
context.canvas.height = $("img").height();
我遇到的问题是,有时图像没有显示在画布中,画布也不是图像的大小。我想这可能是因为装载问题。我该如何等待画布将图像显示在背景中?谢谢
Edit:请注意,在DOM中,画布总是有正确的src。它只是不显示
编辑2:这是JSfiddle。在这里,一切看起来都很好,但我的代码中还有很多要做的事情,包括从服务器上获取东西,所以速度较慢。希望这能帮助你们理解问题:http://jsfiddle.net/wL3ezLke/2/再次感谢
您需要使用:
$(function(){
// Code executed once the DOM is loaded.
});
官方文件:https://api.jquery.com/ready/
如果我理解正确,你的问题是知道图像何时加载(根据你的描述,可能还有很多其他问题)。
测试图像是否已加载非常简单。
var $img = $('#hiddenImg');
if ($img[0].complete) doCanvasStuff();
else {
$img.on('load', function(e) {
var $canvas = $('#drawCanvas');
$canvas.css({width: $img.width(), height: $img.height()});
//you can go ahead with the background image, but this is preferable
var ctx = $canvas[0].getContext("2d");
ctx.drawImage(img,0,0);
}
}
这应该确保您只在加载图像后才对其进行画布加载,或者在加载图像时立即进行画布操作,篡改
更改
$('#drawing > canvas').css('background-image','url('+$(".image img").attr('src')+')');
context.canvas.width = $("img").width();
context.canvas.height = $("img").height();
至
context.canvas.width = $("img").width();
context.canvas.height = $("img").height();
$('#drawing > canvas').css('background-image','url('+$(".image img").attr('src')+')');
因此CCD_ 2和CCD_。
相关文章:
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 在检索数据时是否可以停止图像加载请求
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- jQuery:获取图像加载错误的详细信息
- 在safari和chrome中,js图像加载产生了奇怪的结果
- 图像加载不适用于 IE 8 或更低版本
- 这个图像加载功能有什么作用
- JavaScript 图像加载器不起作用
- 动态图像加载是否会减少服务器过载
- 跨来源图像加载被拒绝-仅限iPhone-简单图像上传
- 纯javascript的进度图像加载程序仅当用户单击提交html表单时
- 使用JavaScript延迟图像加载
- 如果当前图像加载缓慢,如何加载其他图像
- HTML图像加载触发一个错误
- 将图像加载到localStorage,并将图像src设置到该位置
- jquery图像加载检查错误
- 将图像加载到织物画布背景中
- 需要在bootstrap css中单击时将图像加载为模态
- 正在显示加载..在将新图像加载到网站时播放动画
- 砖石事件:在图像加载和布局完成后调用事件