2015-06-12 15 views

回答

3

.toDataURL是不會觸發任何事件的同步操作。

作爲同步,這是一個阻塞操作所以沒有需要alert以防止在toDataURL完全完成之前執行下一個命令。當toDataURL完全完成時,將執行下一個命令。

由於您使用dataURL作爲圖像源,因此您需要爲該圖像時間通過分配回調加載:

var img=new Image(); 
img.onload=function(){ 
    ctx.drawImage(img,0,0); 
} 
img.src=canvas.toDataURL(); 
+1

雖然這很奇怪,但這是我的理解。在使用image.src = ... toDataURL之後添加警報,可以將圖像寫入另一個畫布,而不會向其他畫布寫入任何內容。也許這與使用兩個獨立的功能有關? –

+0

是的,您需要將'image.onload = function(){...圖像在此處完全加載...}'附加到您的代碼中。 – markE

+0

是的,工作!那麼,即使在編程完成時,我假設圖像加載是異步事件? –

0

.toDataURL是一種不觸發任何事件的同步操作。 對於Chrome 57,這不是真的。不知道這是一個錯誤還是故意的。

+0

它的用意是:https://bugs.chromium.org/p/chromium/issues/detail?id=514206 – mems

相關問題