解决方法
支持HTML5 Canvas的浏览器本身也支持SVG。因此,您可以这样做:
var img = new Image; img.onload = function(){ myCanvasContext.drawImage(img,0); }; img.src = "foo.svg";
这种技术的唯一缺点是,如果SVG在您的域外,则画布将被污染;您将无法使用getImageData()来读取生成的SVG,如果这是您的目标。
我把这个技术的例子放在我的服务器上:http://phrogz.net/tmp/canvas_from_svg.html
我已经测试了这一点,并验证它在IE9,Chrome v11b,Safari v5和Firefox v4上的工作原理(看起来一样)。
[编辑]请注意:
Chrome浏览器和Firefox目前在安全性方面“平庸”,并且在将任何SVG绘制到画布上后(不论域名),都不允许您阅读画布(例如getImageData()或toDataURL())these have been fixed> Firefox目前有一个错误,它拒绝将SVG绘制到画布上,除非SVG指定了height和width属性。