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');
}