2014-09-04 92 views
0

我有一个HTML5 Canvas对象,我使用Javascript来调整大小。然后我画它。为什么iOS在调整大小后无法呈现html5 canvas绘图?

在iOS上,除非使用setTimeout延迟绘图,否则绘图不会显示。

所以这个代码显示了什么?

myCanvas.width = width; 
myContext.strokeStyle = '#000'; 
myContext.moveTo(0, 0); 
myContext.lineTo(2000, 2000); 
myContext.stroke(); 

...但这样做:

myCanvas.width = width; 

setTimeout(function(){ 
    myContext.strokeStyle = '#000'; 
    myContext.moveTo(0, 0); 
    myContext.lineTo(2000, 2000); 
    myContext.stroke(); 
}, 100); 

在桌面浏览器都工作得不错,但不是在Safari浏览器的iOS。

这是什么原因引起的,setTimeout是解决它的最佳解决方案?

谢谢,

+1

闻起来像是一种竞争条件给我。我不知道它为什么会发生,但'setTimeout'不能是最好的解决方案。 – 2014-09-06 03:17:35

+0

感谢您的评论 - 我添加了一个答案,但我对问题的诊断是错误的。 – Fijjit 2014-09-09 19:56:42

回答

0

我的错误。原来setTimeout与它无关。

我的确发现,尽管这可能会帮助其他人,因为浏览器中允许使用canvasses的最大尺寸,而在移动浏览器(例如Safari)上,这个尺寸却非常小。

看到这个问题的更多信息:Maximum size of a <canvas> element

我试图呈现一个画布太大iPhone。