Javascript 通过jQuery或JS打开或重定向到Base64 DataURL

Javascript 通过jQuery或JS打开或重定向到Base64 DataURL,javascript,base64,Javascript,Base64,我有一个脚本,可以将画布元素转换为”; win.location.assign(重新加载); } $(“#打印卡”)。单击(函数(){打印卡();}); 看起来我应该能够从图像id获取dataURL并重定向到它,而不是一个新窗口,但我不知道如何实现它 我尝试将canvas.toDataURL('image/png)分配给win.location,但没有帮助 任何指导都将不胜感激。您似乎只是试图在新选项卡中打开生成的图像。出于安全原因,大多数现代浏览器不允许在顶部框架中以编程方式打开数据URL,

我有一个脚本,可以将画布元素转换为
”;
win.location.assign(重新加载);
}
$(“#打印卡”)。单击(函数(){打印卡();});
看起来我应该能够从图像id获取dataURL并重定向到它,而不是一个新窗口,但我不知道如何实现它

我尝试将
canvas.toDataURL('image/png)
分配给
win.location
,但没有帮助


任何指导都将不胜感激。

您似乎只是试图在新选项卡中打开生成的图像。出于安全原因,大多数现代浏览器不允许在顶部框架中以编程方式打开数据URL,您需要使用不同的方法,例如:

<script>
function print_card(){
    var canvas=document.getElementById("canvas");
    var win=window.open();
    win.document.write("<img id='compiledImg' src='"+canvas.toDataURL('image/png')+"' width='324' height='204' style='margin: 0; padding: 0; background: #e6e6e6;'/>");
    win.location.assign(reload);
}

$("#printCard").click(function(){ print_card(); });
    </script>


如果您需要支持不支持
htmlcanvaseElement.toBlob()
(如Edge和更旧的浏览器)的浏览器,您可以使用。(由于我不是polyfill的作者,我不确定是否可以将代码直接粘贴到此处。)

出于安全原因,大多数现代浏览器不允许在顶部框架中以编程方式打开数据URL-请参阅例如@PetrSrníček谢谢您的回答。我注意到链接的讨论没有提到在打印对话中打开数据URL。您认为这可能吗?
function openCanvasContentInNewWindow(canvas) {
  canvas.toBlob(blob => {
    const objectURL = URL.createObjectURL(blob);
    window.open(objectURL);
  }, 'image/png');
}