【问题标题】:How to force Raphael JS to output as svg如何强制 Raphael JS 输出为 svg
【发布时间】:2011-08-26 20:05:18
【问题描述】:

我目前正在尝试从带有由 raphael 生成的图表的 html 页面生成 pdf。

它适用于除 Internet Explorer

我是用wkhtmltopdf来转换页面的,它是用webkit来渲染页面的,所以用IE的时候不支持vml。

有没有办法强制 Raphael 在 IE 中呈现 svg 而不是 vml? 我知道它不会显示,但我会在 vml 中渲染一次,在 svg 中渲染第二次。

已经看到可以设置属性了

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

但对象实例化后就不起作用了。

【问题讨论】:

    标签: javascript svg raphael vml


    【解决方案1】:

    我也是希望 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 将遵循现代浏览器的代码路径,这显然行不通。我查看了这些错误,它们似乎很难修复或解决。

    【讨论】:

      【解决方案2】:

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

      Raphael.vml = false;
      

      【讨论】:

      • 遗憾的是这不起作用。一旦对象被实例化,似乎没有什么可以改变它。
      【解决方案3】:

      根据这个线程(虽然有点旧),没有办法让 IE 接受 SVG 元素:

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

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

      【讨论】:

        猜你喜欢
        • 2011-02-20
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        • 2015-09-21
        • 2015-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多