【发布时间】:2016-03-17 17:10:23
【问题描述】:
我正在尝试制作一些 SVG,然后将它们绘制到画布上。它们需要被绘制到画布上,因为之后我会进行一些像素级的操作。我正在关注MDN article 并尝试绘制一个矩形。到目前为止一切顺利(fiddle)。但是当我尝试apply a filter 时,它会中断。
(我使用的示例是一个矩形,但我稍后将使用自定义路径,因此画布 rect() 方法不合适)。
发生了什么事?我的直觉是 filter 节点在加载 svg 节点之前并不“存在”......但是,rect 节点也不存在,所以我真的不知道......
var data = '<svg ...' //the svg code
var DOMURL = window.URL || window.webkitURL || window;
var img = new Image();
var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
var url = DOMURL.createObjectURL(svg);
img.onload = function () {
ctx.drawImage(img, 0, 0, 223, 223);
DOMURL.revokeObjectURL(url);
}
img.src = url;
编辑:天哪,我什至没有想到它是浏览器!我正在使用 Firefox 43。它以铬显示;我确实需要它在 Firefox/gecko 中正确显示,因为 FF 在目标受众的浏览器市场中占有很大份额。我检查了 FF 42 和 43 的 Linux 和 Windows 版本,它们都有同样的问题。
【问题讨论】:
-
你的问题是什么,小提琴似乎工作正常。
-
小提琴也适合我。这是特定浏览器的问题吗?