2014-09-04 95 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。