如何强制Raphael JS输出为svg

时间:2011-08-26 20:05:19

标签: javascript svg raphael vml

我目前正在尝试使用raphael生成的图表从html页面生成pdf。

除了Internet Explorer之外,它在每个浏览器上运行良好< 9 raphael使用vml。

我正在使用wkhtmltopdf来转换页面,它使用webkit来呈现页面,因此在使用IE时它不支持vml。

有没有办法迫使Raphael在IE中渲染svg而不是vml? 我知道它不会显示,但我要做的是在vml中再渲染一次,在svg中再渲染一次。

我已经看到我可以设置属性

Raphael.type = "SVG";
Raphael.svg = true; 

但在实例化对象后它不起作用。

3 个答案:

答案 0 :(得分:2)

我也是那些希望Internet Explorer生成SVG的人之一。它不必显示,只需发送到服务器即可。所以我调查了这个:

你可以强迫Raphael认为它应该生成一个SVG:

    var rProto, paper;

    rProto = Raphael.prototype.raphael;
    rProto.svg = true;
    rProto.vml = false;
    rProto.type = 'SVG';

    var paper = Raphael(...);

然而,Raphael现在会抛出大量错误,因为Internet Explorer将遵循现代浏览器的代码路径,这显然不起作用。我查看了这些错误,他们似乎无法修复或解决这些问题。

答案 1 :(得分:0)

很多命令引用R.vml尝试设置它,

Raphael.vml = false;

答案 2 :(得分:0)

根据这个帖子(虽然有点旧)但是没有办法让IE接受SVG元素:

http://groups.google.com/group/raphaeljs/browse_thread/thread/5a05193c0334bda7/25776b86e78d3c2f?lnk=gst&q=force+svg#25776b86e78d3c2f

但是,我不明白你的意思是“它正在使用webkit,因此它在使用IE时不支持VML ”。据我所知,WebKit是一个不同的渲染器,它与IE无关。也许如果你在问题上进一步发展,我们可以帮助找到解决方案。