我正在尝试使用canvg来栅格化我文档中嵌入的SVG图像。以下代码在Firefox 17中生成正确的输出:
//svg is a jQuery object that we selected earlier
//canvas is a canvas created earlier
//use a temporary DOM object to serialize the SVG DOM object into text;
var tmpContainer = $(document.createElement('div'));
tmpContainer.append(svg.clone());
var svgText = tmpContainer.get(0).innerHTML;
canvg(canvas.get(0), svgText);
但是,在IE 8(我的组织支持的其他浏览器)中,svgText
永远不会获取值。我尝试过其他选项,比如jQuery中的html()
方法,但收效甚微 - 毕竟,它并不是真正的html。
我的问题是这样的:如何在SV8中将SVG作为一串文本?还有其他方法可以将其传递给canvg()
,我只是没想到吗?
答案 0 :(得分:0)
好的,所以我有坏消息。准备?这是:
Internet Explorer 8中没有SVG这样的东西。
一旦我使用调试器实际在页面源上查看,我发现Google Charts(以及任何其他Javascript图表库)就图表使用VML而不是SVG。这意味着我无法使用canvg()
或其他任何东西。
我的选择如下:
使用node.js在服务器端创建SVG图表。 David Padbury了解如何使用Highcharts执行此操作。需要进行大量扩展,但基本理念仍然相同。这是最有可能工作的,但我对node.js一无所知。此外,我需要智能地设计我的服务器和客户端之间的接口,这样我最终不会有两个脚本需要维护。
尝试使用VML转换实用程序。这看起来不太有希望。但是,这是我的JavaScript必须使用的,所以如果我想保持它的客户端,这是最直接的方法。