在Internet Explorer中,将DOM元素(SVG作为外部元素)绘制到画布上无法正常工作。

8
我成功地使用了这个技术,将DOM元素(如输入和选择字段)的用户输入绘制在画布上,并将其作为图像可用。
这在Chrome、Safari和Firefox中都能正常工作,但是在Internet Explorer 11中,我遇到了以下错误:
- 当我尝试在我开发的完整站点上运行时,收到了XML5634: 此元素已有相同名称的属性。行:1,列242 的错误提示。据说当name和id字段上有重复值时,会显示此错误,但我已经检查了DOM中的每个元素,没有重复值。 - 当我尝试在这个fiddle上复现整个过程时:http://jsfiddle.net/5mf4n7v3/。从调试器来看,在调用ctx.drawImage()时出现了错误。
基本上,在这个fiddle里我想要做的是在画布上绘制SVG黄色圆形图像和由我提供的任意SVG。这在所有主流浏览器中似乎都可以工作,除了IE11。是否有其他人也遇到了相同的问题并知道一些变通方法?

1
IE 不支持 <foreignObject> 标签。 - Robert Longson
那么这方面没有变通方法吗? - whidev
2
除非您把 Chrome、Safari、Firefox和Opera 当做变通方案,不然就没有。 - Robert Longson
顶一下。我也遇到了同样的问题,使用canvg从IE11导出一些SVG和PNG文件。在其他浏览器中可以正常工作。 - 111
有人找到任何解决方案了吗? - nullpointer
请查看此处:https://dev59.com/6GIj5IYBdhLWcg3w8ZQF - Gabriel
1个回答

1

IE 10不支持<foreignObject>标签,但你不需要它来在画布上绘制文本,这里我重新编写了你的代码示例,现在它可以在IE中工作 - http://jsfiddle.net/skyr9999/5hhpo76h


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接