Javascript Webview中的Canvas元素仅在某些时候绘制

Javascript Webview中的Canvas元素仅在某些时候绘制,javascript,android,canvas,webview,Javascript,Android,Canvas,Webview,我正在android应用程序中使用Webview。我将二维画布放置在webgl画布上(webgl在此处注释)。现在,当我启动应用程序时,一半的时间它绘制了预期的路径,一半的时间它什么也不绘制。我错过什么了吗?这可能是缓存问题还是什么 <!DOCTYPE html> <html lang="en"> <head> <title>Cardboard container</title> <meta http-equiv="Content

我正在android应用程序中使用Webview。我将二维画布放置在webgl画布上(webgl在此处注释)。现在,当我启动应用程序时,一半的时间它绘制了预期的路径,一半的时间它什么也不绘制。我错过什么了吗?这可能是缓存问题还是什么

<!DOCTYPE html>
<html lang="en">
<head>
<title>Cardboard container</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<style>
  body {
    margin: 0px;
    overflow: hidden;
    /*background-color: black;*/
  }
  #container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
    display: none;
  }
  #stamp {
  position: absolute;
  top: 0px;
  left: 160px;
  width: 38px;
  height: 38px;
  background-color: red;
  z-index: 0;
  }
  #bezier{
    z-index: 2;
  }
</style>
</head>
<body>
<div id="container"></div>
<div id="stamp"></div>
<canvas id="bezier">Error creating bezier canvas</canvas>

<script src="js/third-party/threejs/three.js"></script>
<script src="js/third-party/threejs/StereoEffect.js"></script>
<script src="js/webgl.js"></script>
<script src="js/bezier.js"></script>

<script>

var consecutiveAbsentFrames = 6;
var totalFrames = 90;
var frameCount = 0;
var straightLineSpeed = 0.05;
var scaleFactor = 0.9;

var numGridPoints = 196; 
var fovRadius = 9;
var fovXoffset = 0.5;
var gridPoints = []; // Points are an array [x0,y0,x1,y1,...]
var gridPoints2d = [];
var completePath = []; 
var pathIndex = 0;

init();

function init() {

  stamp = document.getElementById('stamp');

  init2d();
}


function init2d(){
  var b = document.getElementById('bezier');
  b.width = window.innerWidth * scaleFactor * 0.5;
  b.height = window.innerHeight;
  var ctx=b.getContext('2d');

  ctx.moveTo(0,0);
  ctx.lineTo(100,100);
  ctx.stroke();
}

</script>
</body>
</html>

纸板容器
身体{
边际:0px;
溢出:隐藏;
/*背景色:黑色*/
}
#容器{
位置:绝对位置;
排名:0;
左:0;
右:0;
底部:0;
z指数:1;
显示:无;
}
#戳记{
位置:绝对位置;
顶部:0px;
左:160像素;
宽度:38px;
高度:38px;
背景色:红色;
z指数:0;
}
#贝塞尔{
z指数:2;
}
创建bezier画布时出错
var ConcertiveAbcentFrames=6;
var totalFrames=90;
var frameCount=0;
var直线速度=0.05;
var scaleFactor=0.9;
var numGridPoints=196;
var fovRadius=9;
var fovXoffset=0.5;
var gridPoints=[];//点是一个数组[x0,y0,x1,y1,…]
var gridPoints2d=[];
var completePath=[];
var路径指数=0;
init();
函数init(){
stamp=document.getElementById('stamp');
init2d();
}
函数init2d(){
var b=document.getElementById('bezier');
b、 宽度=window.innerWidth*scaleFactor*0.5;
b、 高度=窗内高度;
var ctx=b.getContext('2d');
ctx.moveTo(0,0);
ctx.lineTo(100100);
ctx.stroke();
}
编辑:
在装有安卓5.1的Moto X上,行为是正常的,注释5 5.1.1不正确

什么是
resize
我们可以看到该代码吗?我认为如果您将超时值从
1
增加到
1000
,您将看到正在绘制canvase,但由于在事后立即调用resize而立即删除,事实上,我已经删除了调整大小侦听器。问题依然存在。我会编辑我的代码。你用的是cordova吗?或者只是尝试使用相对路径访问javascript文件?是否可以检查加载页面是否有问题?我认为所有的JS和HTML都很好,假设标签在末尾结束,这可能是一个输入错误。如果没有,请加上