图片未绘制在“;重新加载页面”;
Picture not drawn on "reload page"
此代码在画布中显示图片:
<!DOCTYPE html>
<html><head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>canpic</title>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"><META HTTP-EQUIV="Expires" CONTENT="-1">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<style>
canvas { border: 42px solid green; }
</style>
</head><body>
CANVAS PICTURE TEST
<br>
<canvas id="pinaka" width="600" height="370">
No HTML5 in this browser!
</canvas>
<br>
<p id="message"></p>
<script>
var can; // Canvas
var ctx; // Canvas context
var backimage=new Image();
function test1() {
can=document.getElementById("pinaka");
ctx=can.getContext('2d');
backimage.src="images/p1.jpg";
alert('drawing');
ctx.drawImage(backimage,0,0);
}
$(document).ready(function() { test1(); })
</script>
</body></html>
这在我尝试过的几种浏览器上都能很好地工作,只有一个例外:
当我第一次在Safari 4上加载此页面时,图片绘制得很好,但当我重新加载页面(Apple-R键)时,只绘制画布边框,但画布内部保持空白。错误控制台中也没有显示任何错误。我可以验证我的函数test1()是否在重新加载后被调用,因为会出现警报框。
这只是Safari4中的一个错误,我必须接受它,还是我的代码有问题?至少在尝试了另外两种浏览器(Camino和SeaMonkey)后,代码运行良好。
我用以下方式修改了我的函数:
function test1() {
can=document.getElementById("pinaka");
ctx=can.getContext('2d');
backimage.onload = function() {
ctx.drawImage(backimage,0,0);
}
backimage.src="images/p1.jpg"; // triggers loading the picture
}
现在它可以工作了(因为它确保在绘图开始之前加载图片。
相关文章:
- 绘制(重新加载)具有cors=“”的图像;匿名的“;在画布上(javascript)
- ajax加载()后,包含图表的图像不会重新绘制
- 仅在加载Google Web字体后绘制到画布
- 我无法在加载图像的画布上绘制
- 如何在画布上绘制(使用鼠标/触摸)、保存绘制的对象、存储、加载和操作
- 图片未绘制在“;重新加载页面”;
- 用一个加载项绘制图像阵列
- 加载带有 onload 的图像数组,如何限制将它们绘制到画布
- Javascript - 加载GIF冻结,同时将图像绘制到画布(Phonegap/Cordova)
- Javascript,如何加载,绘制和循环120帧
- 预绘制拉斐尔屏幕,将它们保存到文件并在运行时加载
- HTML5,在加载时将像素渲染为图像,以加快绘制时间
- Javascript Image() 不加载或绘制
- HTML5 画布:加载时绘制的贝塞尔曲线
- 如何加载新图像并将其绘制到画布上
- 如何在不重新绘制绑定视图的情况下重新加载angularjs范围数据
- 第一次加载时绘制到画布失败.刷新后就可以工作了
- Flot:当试图在页面加载时绘制图形时,会弹出一个奇怪的错误
- 一个预加载图像的函数-现在需要绘制它们,但如何绘制
- XDomainRequest可以用来加载和绘制图像吗?