【问题标题】:Canvas.toDataURL() Uncaught TypeError: undefined is not a functionCanvas.toDataURL() Uncaught TypeError: undefined is not a function
【发布时间】:2018-07-07 21:29:58
【问题描述】:

我正在使用一个名为 html2canvas 的插件将我页面上的一些 html 转换为画布元素。然后我想将该画布保存为图像。不幸的是,我一直遇到标题中的错误。我尝试过使用不同的变量名、不同的 html 等。但一直遇到同样的错误。这是我的代码(点击按钮触发):

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
    }

【问题讨论】:

  • 不要做我刚刚做了一个小时的事情:确保toDataURL() 的 URL 部分大写。我很肯定我的所有代码都是正确的,但仍然出现此错误....因为带有小写 Url 的 toDataUrl() 实际上并不是一个函数,无论人们多么相信它,哈哈。

标签: javascript html5-canvas


【解决方案1】:

好的,我发现我的问题是我试图在我的 jQuery 对象而不是我的画布元素上调用 toDataURL()。为了解决这个问题,我使用了.get(0)。完整代码如下:

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
    }

【讨论】:

  • 有没有办法在对话框中强制使用文件名和扩展名?谢谢
  • @tomexx 这只是将图像创建为位数组。这取决于你如何从那里处理它,如果你想将它保存在某个地方或转换它,你需要使用一些服务器端代码,我认为不可能只使用 jQuery。
猜你喜欢
  • 1970-01-01
  • 2014-08-15
  • 2015-01-14
  • 2014-07-06
  • 2014-09-01
  • 2015-11-04
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多