1

我在尝试保存使用 html2canvas 生成的图像时遇到了此错误消息。

所以我写了这段代码:

<div id"mycanvas">
    <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
    <div id="container2" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
    <div id="container3" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
</div>

 </page> 


<script type="text/javascript">
var canvas = document.getElementById("mycanvas");
var img    = canvas.toDataURL("image/png");
document.write('<img src="'+img+'"/>');
    </script>   

即使渲染的图像在缓存中并且使用 html2canvas 生成良好,我也不知道如何保存它。

这段代码似乎没有错,但它向我显示了这条错误消息。

所以我有点失落。

以下是错误消息:

Uncaught TypeError: Cannot call method 'toDataURL' of null export-graphic-stat_employee.php:241
html2canvas: Preload starts: finding background-images Core.js:18
html2canvas: Preload: Finding images Core.js:18
html2canvas: Preload: Done. Core.js:18
html2canvas: start: images: 0 / 0 (failed: 0) Core.js:18
Finished loading images: # 0 (failed: 0) Core.js:18
html2canvas: Renderer: Canvas renderer done - returning canvas obj Core.js:18
Screenshot created in 167 ms<br /> Core.js:18

接受我最崇高的敬意。

亲切的问候。

SP

4

1 回答 1

4

您在这里缺少等号;

<div id"mycanvas">

...这意味着你的...

document.getElementById("mycanvas");

将返回空值。

调用null.toDataURL("image/png");是给您错误消息的原因。

编辑:如果您想实际使用 toDataURL,则该方法仅适用于实际的画布元素,并且您尝试在div. 相反,删除 iddiv并添加;

<canvas id="mycanvas" width="400" height="400" > </canvas>

或使用 HTML2Canvas 生成的画布中的实际画布 ID 来使用实际的画布元素。

于 2012-09-14T08:41:39.833 回答