I'm using a plugin called html2canvas to convert some html on my page into a canvas element. I then want to save that canvas as an image. Unfortunately I keep encountering the error in the title. I have tried with different variable names, with different html, etc. But keep encountering the same error. Here is my code (triggered on a button click):
JS
function generate(){
html2canvas($('#b2_1'), {
onrendered: function(canvas) {
canvas.setAttribute("id", "canvas");
document.body.appendChild(canvas);
}
});//this all works, the canvas appears as expected
var myCanvas = $(document).find('#canvas');
myCanvas.css("margin-left", "50px");//this was to test I was selecting the right element, the canvas moves
var myImg = myCanvas.toDataURL();//code breaks here
}
I'm using a plugin called html2canvas to convert some html on my page into a canvas element. I then want to save that canvas as an image. Unfortunately I keep encountering the error in the title. I have tried with different variable names, with different html, etc. But keep encountering the same error. Here is my code (triggered on a button click):
JS
function generate(){
html2canvas($('#b2_1'), {
onrendered: function(canvas) {
canvas.setAttribute("id", "canvas");
document.body.appendChild(canvas);
}
});//this all works, the canvas appears as expected
var myCanvas = $(document).find('#canvas');
myCanvas.css("margin-left", "50px");//this was to test I was selecting the right element, the canvas moves
var myImg = myCanvas.toDataURL();//code breaks here
}
Share
Improve this question
asked Oct 9, 2014 at 17:07
gaynorvadergaynorvader
2,6573 gold badges20 silver badges36 bronze badges
1
|
1 Answer
Reset to default 16Ok, I found my problem was I was trying to call toDataURL()
on my jQuery object rather than my canvas element. To fix this I used .get(0)
. Full code below:
function generate(){
html2canvas($('#b2_1'), {
onrendered: function(canvas) {
canvas.setAttribute("id", "canvas");
document.body.appendChild(canvas);
}
});//this all works, the canvas appears as expected
var myCanvas = $(document).find('#canvas');
myCanvas.css("margin-left", "50px");
var myImg = myCanvas.get(0).toDataURL();//have to get the canvas element from the jquery object
}
toDataURL()
is capitalized. I was positive all my code was correct but still getting this error....becausetoDataUrl()
with lowercase Url isn't actually a function no matter how hard one may believe it is, haha. – dhaupin Commented Jun 17, 2016 at 19:45