toDataURL 不是一个函数
toDataURL not a function
我正在尝试为画布生成一个网址。以下是我遵循的步骤:
var can = document.getElementsByTagName("canvas");
var src = can.toDataURL("image/png");
当我尝试在Firebug上运行上述代码时,它会抛出一个错误:
TypeError: can.toDataURL is not a function
我在 ubuntu 上运行 Firefox 8。
getElementsByTagName
返回一个NodeList
[docs],而不是单个元素。
只需访问列表的第一个元素:
var src = can[0].toDataURL("image/png");
如果要获取每个画布的数据 URL,则必须循环访问列表。否则,为画布指定 ID 并使用 getElementById
检索引用可能更方便。
仔细检查您运行的是在画布对象本身toDataURL()
,而不是在上下文对象上运行。
var can = document.getElementsByTagName("canvas");
这将返回一个画布元素数组。 您需要按 ID 获取画布。
var can = document.getElementById("canvasId");
在接受的答案中没有提到的东西:即使使用ID选择器,jQuery的Sizzle也会返回一个对象/集合。因此,如果您在使用 jQuery 时收到此错误,请使用 [0]
附件访问元素的第一个索引。如果您好奇,可以使用console.dir($('#canvasId));
来探索索引
例如,这个完全正常的选择器将失败:
var src = $('#canvasId').toDataURL("image/png");
但是这个会起作用(注意额外的括号(:
var src = ($('#canvasId')[0]).toDataURL("image/png");
如果你使用 jquery
var canvas = $('#myCanvasId');
var image = canvas[0].toDataURL('image/png');
如果你使用JavaScript
var canvas = document.getElementById('myCanvasId');
var image = canvas.toDataURL();
(已解决!我遇到了这个问题,我解决了它。首先,您应该检查是否已在 head 标签的脚本链接中包含 CDN HTML2CANVAS.js。为此,您应该将此脚本粘贴到您的 head 标签中,在 jquery CDN 之后:(将此脚本添加到您的头标签中(
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
在这个CDN中,已经定义了函数"toDataURL",如果你去这个链接并在这个脚本页面上搜索(用CTRL+F(,你可以找到toDataURL函数。(已在此 CDN 中定义(现在我的头标签如下所示,它可以工作:
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
</head>
此代码有助于捕获画布图像并从视频下载。
capture() {
var video = document.getElementById('video');
var canvas = $('#canvas');
canvas.attr('width', 300);
canvas.attr('height', 300);
canvas[0].getContext('2d').drawImage(video, 0, 0, canvas.width(), canvas.height());
console.log(canvas);
var download = document.getElementById("download");
var image = canvas[0].toDataURL("image/png");
download.setAttribute("href", image);
}
<video id="video" width="300">
<source src="videoURL" type="video/mp4">
</video>
<a class="cmd-txt tar" href="" id="download" download="download.png">
<img id="capture" src="src/assets/images/download_black.png" (click)="capture();" class="cursor-pointer" alt="download video image">
</a>
<canvas id="canvas">
</canvas>
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟