2016-11-08 34 views
-2

我想「克隆」一張表格到一個圖像在HTML中,代碼的作品,但不是所有的時間,它只能在第二個或第三個按鈕的觸發器工作。html2canvas - toDataURL不會一直工作

下面的圖片顯示,在第一次單擊圖像表時不顯示只顯示一個框。但在第二次點擊時顯示。我認爲這與「圖像嵌入概念」有關,但我對此並不熟悉,並且存在與此相關的問題,但未給出答案或給出的答案不起作用。

enter image description here 我的代碼在某種程度上類似於下面的小提琴,但我有一個動態表。它隨時都可以

jsfiddle codes

$(document).ready(function() { 
    var image2 = new Image(); 
    $("#more").click(function() { 

    var tableImage; 
    html2canvas($("#dataTable"), { 
     onrendered: function(canvas) { 
     tableImage = canvas.toDataURL("image/png"); 
     image2.src = tableImage; 
     }, 
     allowTaint: false 
    }); 

    $('.reportContents').append('<input id="title" style="border:none;"    name="title" type="hidden" value="null"/>'); 

    $('.reportContents').append('<input type="hidden" id="imageSrc"    name = "imageSrc" value="' + tableImage + '"/>'); 

    $('.reportContents').append('<img style="width: 90%;" id="image" src="' + image2.src + '">'); 

    }); 

}); 
+0

highlitend是相關 – SCS

+0

它不是很容易讀懂你的代碼,你把它的方式的代碼,你可以請其託管在的jsfiddle請 ?非常感謝 – Cr3aHal0

+0

https://jsfiddle.net/afgz3cuy/9/ @ Cr3aHal0加了我的小提琴對不起,代碼是simmilar只是編輯一些部分,使其工作沒有我的代碼的其他部分 – SCS

回答

1

您正在試圖完成之前它的衍生圖像追加。移動附加功能html2canvas函數內部:

$(document).ready(function() { 
    var image2 = new Image(); 
    $("#more").click(function() { 
    var tableImage; 
    html2canvas($("#dataTable"), { 
     onrendered: function(canvas) { 
     tableImage = canvas.toDataURL("image/png"); 
     image2.src = tableImage; 
     $('.reportContents').append('<input id="title" style="border:none;"    name="title" type="hidden" value="null"/>'); 
     $('.reportContents').append('<input type="hidden" id="imageSrc"    name = "imageSrc" value="' + tableImage + '"/>'); 
     $('.reportContents').append('<img style="width: 90%;" id="image" src="' + image2.src + '">'); 
     }, 
     allowTaint: false 
    }); 
    }); 
}); 

更新FIDDLE

+0

以外的htmlcanvas不知道這是不是與我的代碼工作,我不知道這是否是原因,我在我的函數內創建reportContents div。目前代碼似乎不再進入html2Canvas,不再嘗試將控制檯行放入我的代碼中。 'var para = document.createElement(「div」); var element = document.getElementById(「reportBody」); para.setAttribute(「class」,「reportContents」); element.appendChild(para);' – SCS

+0

我想你可能會發現html2canvas在這種情況下不起作用。從文檔中可以看出:'它實際上並不是對頁面進行截圖,而是根據它從DOM中讀取的屬性來構建它的表示。您可能需要將內容加載到加載時存在的元素。 – sideroxylon

+0

謝謝我已經做到了,製作了幾個div等等。我不認爲我需要在這裏發佈答案,因爲有一大堆代碼。這不知怎麼接近,所以只會接受這個答案 – SCS