我正在尝试通过画布绘制将Highcharts创建的SVG图像转换为PNG图像,以便能够将其移交给htmlkit:
function b64EncodeUnicode(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {
return String.fromCharCode('0x' + p1);
}));
}
var svg = document.getElementsByClassName('highcharts-root')[0];
var w = $(svg).width();
var h = $(svg).height();
var container = $(".highcharts-container").eq(0);
var dataURL = "data:image/svg+xml;base64," + b64EncodeUnicode(container.html());
// create PNG image by drawing on canvas
var canvas = document.createElement("canvas");
canvas.width = w;
canvas.height = h;
img = new Image();
img.onload = function () {
canvas.getContext("2d").drawImage(this, 0, 0);
dataURL2 = canvas.toDataURL(); // this instruction throws an exception
// some more code
}
img.src = dataURL;
这在Opera,Firefox和Chrom中运行良好,但遗憾的是在IE11中,最后一行引发了安全性异常。 我找到了一些关于这个问题的讨论,但没有一个与我的问题相符,我找不到解决方案。 我在Webmatrix3的本地IIS服务器上运行代码。