我有一个脚本,可以从数据查询中创建动态SVG图形。我需要将它们粘贴在PDF中,我正在使用jsPDF。不幸的是,jsPDF自己的addSVG似乎没有用,所以我花了一些时间尝试使用canvas将SVG转换为PNG。
我似乎将SVG数据URI插入到img对象中,但是当我尝试将其绘制到画布时,我在IE11中收到“意外的属性或方法”错误。
我尝试了以下内容:
img.onload = function () {
ctx.drawImage(img,0,0);
}
img.onload = function () {
try {
ctx.drawImage(img,0,0);
}
catch (err) {
setTimeout(ctx.drawImage(img,0,0),1);
}
}
img.addEventListener("load", function () {
ctx.drawImage(img,0,0);
}
img.addEventListener("load", function () {
try {
ctx.drawImage(img,0,0);
}
catch (err) {
setTimeout(ctx.drawImage(img,0,0),1);
}
)}
最后一个似乎是最可靠的,使用addEventListener
来自MSDN;但它仍会偶尔抛出相同的错误。我也直接在我的html中声明了画布,我已经尝试了setTimeout()
的不同时间。
是否有任何万无一失的方法可以确保它在IE11中有效?
编辑:为了澄清,var ctx = canvas.getContext('2d')
只是img.onload
或img.addEventListener
之上的一两行。有趣的是,MSDN文档here内部声明了ctx,即img.addEventListener("load", function () { var ctx = canvas.getContext('2d'); ... }
错误始终为0x8000ffff - JavaScript runtime error: Unexpected call to method or property access.
,调试程序会突出显示ctx.drawImage
行。