javascript - 将 Canvas 保存为 blob,然后将 blob 保存为文件

标签 javascript jquery canvas blob

这或多或少是页面上的一个图标,单击时会执行某些操作,但页面上的图标当前是一个 anchor 。我可以将其更改为 div(在我的 UI 中,所有其他图标都是 div),但由于某种原因,以下内容不起作用。

为什么第一次点击没有注册?

$('#a').click(save);

function save(ev) {
  $('#canvas')[0].toBlob((blob) => {
    let URLObj = window.URL || window.webkitURL;
    ev.target.href = URLObj.createObjectURL(blob)
    ev.target.download = "untitled.png";
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id='canvas'></canvas>
<a id='a'>click me to save</a>

fiddle 看行为: https://jsfiddle.net/udbq3fb7/

最佳答案

经过大量的尝试和努力,在不使用第三方的情况下,这里有一个同样有效的答案:

$('#a').click(save);

function save(ev) {
   $('#canvas')[0].toBlob((blob) => {
        let URLObj = window.URL || window.webkitURL;
        let a = document.createElement("a");  
        a.href = URLObj.createObjectURL(blob);
        a.download = "untitled.png";
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
   });
}

fiddle :https://jsfiddle.net/rkqkr47w/

关于javascript - 将 Canvas 保存为 blob,然后将 blob 保存为文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054723/

相关文章:

html - 使用 HTML 5 Canvas 的 Sprite-Sheet BLIT?

javascript - 使用 String.prototype.replace 删除非字母数字文本

javascript - 在 NodeJS 的 catch block 中使用 continue 语句

javascript - 对不同的 html li 对象使用相同的 jquery 函数

javascript - 使用Jquery的下拉菜单的默认选择值

Javascript - 以编程方式对形状进行动画处理,其方式与 After Effects 中摆动路径的工作方式相同

android - 如何反转弧形底部导航?

javascript - 尝试将 Scss 添加到使用 Webpack 构建的 React 元素中,但我无法让它工作

javascript - 为什么这个函数调用的执行时间会发生变化?

javascript - 如何在 for 循环中向日期添加不同的月份?