2013-01-05 50 views
0

在我的javascript我繪製到畫布上,之後,我whant畫布以被轉換成PNG和顯示在一個分度,如下因素的代碼:Javascript - 如何等待圖像加載?無法讓img.load工作?

var dataURL = document.getElementById('myCanvas').toDataURL("image/png"); 
var imgObj = new Image(); 
imgObj.src = dataURL; 
imgObj.onload = function() {document.getElementById('myImg').appendChild(imgObj); }; 

當我把這種直接描繪畫布我後得到了完全地空白圖像「myImg」但是,如果我有一個鏈接,點擊呼叫完全相同的代碼,它被正確地得出:

<a id="viewImgLnk" href="javascript:void()" onclick=" return convertCanvasToImage();">View Image</a> 

<script> 
    function convertCanvasToImage(){ 
     var dataURL = document.getElementById('myCanvas').toDataURL("image/png"); 
     var imgObj = new Image(); 
     imgObj.src = dataURL; 
     imgObj.onload = function() {document.getElementById('myImg').appendChild(imgObj); }; 
    } 
</script> 

我怎樣才能直接下載,而鏈接的形象呢?

+0

將您的腳本放在身體標記的末尾。 –

+0

當你直接稱之爲你的代碼的位置?你確定你現在畫的畫布是? – allergic

+0

@allergic如果我調用_alert(document.getElementById('myCanvas')。toDataURL(「image/png」)); _我得到一個巨大的字符串,我想這意味着我的畫布被加載,或者有辦法等待畫布要加載嗎? – Sultanen

回答

0

我得到的代碼在過敏的幫助下工作!

setTimeout(function() { 
    var dataURL = document.getElementById('myCanvas').toDataURL("image/png"); 
    var imgObj = new Image(); 
    imgObj.src = dataURL; 
    imgObj.onload = function() {document.getElementById('myImg').appendChild(imgObj); }; 
}, 300);