Javascript 在html正文之前预加载画布?
我有一个基本的webapp,它使用画布框架呈现每个网页上的内容。加载页面时,chrome将在呈现主要内容之前呈现一个空白画布框架(大约20毫秒的空白框架)Javascript 在html正文之前预加载画布?,javascript,html,flask,canvas,Javascript,Html,Flask,Canvas,我有一个基本的webapp,它使用画布框架呈现每个网页上的内容。加载页面时,chrome将在呈现主要内容之前呈现一个空白画布框架(大约20毫秒的空白框架) 当点击多个页面时,空白帧会在视觉上分散注意力,导致用户体验不佳。 在chrome布局页面之前,有没有办法预渲染画布框架?或者有没有一种方法可以让画布框架就绪,这样chrome就不会显示空白框架 基本代码大纲如下所示: <script> function draw() { var canvas = document.ge
当点击多个页面时,空白帧会在视觉上分散注意力,导致用户体验不佳。
在chrome布局页面之前,有没有办法预渲染画布框架?或者有没有一种方法可以让画布框架就绪,这样chrome就不会显示空白框架 基本代码大纲如下所示:<script>
function draw() {
var canvas = document.getElementById("samplecanvas");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
var img = new Image();
img.onload = function(){
ctx.drawImage(img, 0, 0, img.width, img.height,
0, 0, canvas.width, canvas.height);
}
img.src = "data:image/jpeg;base64,...........";
} else {
alert('canvas not supported by this browser')
}
}
</script>
<body onload="draw();">
<canvas id="samplecanvas" width="800" height="800"></canvas>
</body>
函数绘图(){
var canvas=document.getElementById(“samplecanvas”);
if(canvas.getContext){
var ctx=canvas.getContext(“2d”);
var img=新图像();
img.onload=函数(){
ctx.drawImage(img,0,0,img.width,img.height,
0,0,canvas.width,canvas.height);
}
img.src=“数据:图像/jpeg;base64,…”;
}否则{
警报('此浏览器不支持画布')
}
}
正如我所说,上面的方法确实有效,它只会产生一个令人讨厌的空白帧。base64嵌入的图像很大(720p),但我仍然不认为渲染速度慢
有什么想法吗?但是在画布完成渲染之前,网页应该显示什么?一个回退图像就好了。但这似乎并不是所有浏览器都完全支持的,例如:但更重要的是,页面的其余部分都是加载的,从chrome性能工具来看,它完全是单线程的。如果canvas元素可以在解析时显示(可能在单独的线程/工作线程中预先呈现)页面的其余部分,那就太好了。