Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Canvas toDataURL()提供空白图像_Javascript_Html_Canvas - Fatal编程技术网

Javascript Canvas toDataURL()提供空白图像

Javascript Canvas toDataURL()提供空白图像,javascript,html,canvas,Javascript,Html,Canvas,我是JS的完全初学者,我只是在玩HTML5。在实验中,我遇到了这个问题。我有这样的想法: <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script type="text/javascript"> functio

我是JS的完全初学者,我只是在玩HTML5。在实验中,我遇到了这个问题。我有这样的想法:

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script type="text/javascript">
            function graph() {
                // ...stuff that draws to canvas, verified "working"...
                var downloadLink = document.getElementById("myCanvas").toDataURL();
                $("#dlLink").attr("href", downloadLink);
            }
            $(window).load(function() {
                graph();
            });
        </script>
    </head>
    <body>
        <div class="container">
            <h1 style = ";padding-bottom:30px;"><a href="#">Tool</a></h1>
            <canvas id="myCanvas" width="400" height="400"></canvas>
            <a href="#" id="dlLink">Download</a>
        </div>
    </body>
</html>

函数图(){
//…画到画布上的东西,验证“工作”。。。
var downloadLink=document.getElementById(“myCanvas”).toDataURL();
$(“#dlLink”).attr(“href”,下载链接);
}
$(窗口)。加载(函数(){
图();
});

当我单击带有base64编码的下载链接时,我得到一个空白图像。有人能揭示为什么会发生这种情况吗?看起来链接是在画布上有任何内容之前生成的,但我不能确定。

尝试将“image/png”或“image/jpeg”之类的内容类型传递给数据URL。(
canvas.toDataURL(“image/png”)

相反,请尝试以下方法:

$("#dlLink").click(function(){
    var win=window.open();
    win.document.write("<img src='"+document.getElementById("myCanvas").toDataURL()+"'/>");
});
$(“#dlLink”)。单击(函数(){
var win=window.open();
win.document.write(“”);
});

您可以直接将DataURI放入
中。不客气!上面的代码可以跨浏览器工作。将锚href设置为canvas.toDataURL将在浏览器中产生不一致的结果(在chrome中效果好,在FF中有点奇怪,在IE中效果差)。示例:document.getElementById(“dlLink”).href=document.getElementById(“myCanvas”).toDataURL()