javascript - 为什么我不能在 ie 11 中获取 canvas todataurl?
问题描述
我尝试将图表从 xml 渲染到 svg,然后 svg 在画布中绘制并保存在计算机上。
ie 11 中的 Canvas.toDataUrl() SecurityError,但对于谷歌浏览器来说很好。如何解决此问题与此相同,但对我 的渲染图文件没有帮助
请帮我。
我有这个功能
$('#exportBtn').click(function () {
var object = new Object();
object.xml=xml;
render(object)
var svg = document.querySelector("svg");
var img = document.createElement("img");
var canvas = document.createElement("canvas");
var svgSize = svg.getBoundingClientRect();
canvas.width = svgSize.width * 3;
canvas.height = svgSize.height * 3;
canvas.style.width = svgSize.width;
canvas.style.height = svgSize.height;
var svgData = new XMLSerializer().serializeToString(svg);
var svg64 = btoa(svgData);
var b64Start = 'data:image/svg+xml;base64,';
var image64 = b64Start + svg64;
img.onload = function () {
var ctx = canvas.getContext("2d");
ctx.scale(3, 3);
var x0 = Math.floor(0);
var y0 = Math.floor(0);
ctx.translate(-x0, -y0);
var bg = graph.background;
if (bg == null || bg == '' || bg == mxConstants.NONE) {
bg = '#ffffff';
}
ctx.save();
ctx.fillStyle = bg;
ctx.fillRect(x0, y0, Math.ceil(svgSize.width * 3), Math.ceil(svgSize.height * 3));
ctx.restore();
ctx.drawImage(img, 0, 0,canvas.width,canvas.height);
var canvasdata = canvas.toDataURL("image/png", 1);
var a = document.createElement("a");
a.download = "download_img" + ".png";
a.href = canvasdata;
document.body.appendChild(a);
a.click();
};
img.src = image64;
}
);
这是我的错误
解决方案
推荐阅读
- oracle - 分析具有重复记录的oracle表
- kotlin - 错误:没有@Inject 构造函数或@Provides-annotated 方法无法提供xxx
- jenkins - 如何有条件地隐藏参数
- python - 猎鹰引发自定义异常json
- javascript - Typescript 工厂类导致缺少属性
- javafx - JavaFX TimeLine 与 Canvas 文本动画
- c++ - 如何获取显示设备的驱动版本?
- tibco - tibco BW XA 交易
- docker - Que 因 Distillery 版本和 Docker 失败
- swift - 一种在 Swift 中动态调用方法的方法