任何SVG的跨浏览器解决方案?

时间:2011-07-20 13:27:50

标签: cross-browser svg

我知道Raphael.js使用svg,它的完全交叉浏览器:它甚至适用于ie6!所以我想必须有一些js修复允许在每个浏览器中使用svg,对吧?我不需要像Raphael这样的整个图形和动画库,只需要在IE等中支持SV。

我刚刚阅读了关于SVGweb的内容,其中涉及Google的开发,但显然它使用的是Flash,所以它不是跨浏览器安全的。

2 个答案:

答案 0 :(得分:3)

Raphael有一个IE后端,它使用VML DOM,后端用于支持SVG的浏览器,后者使用SVG DOM。然后它有一个外观,公开一个统一的绘图API,并在运行时加载适当的后端,后端将调用统一绘图API委托给适当的浏览器API(SVG或VML DOM)。

这是js库中的常见策略。例如,此策略也用于dojox.gfx。看,这是SVG适配器:http://svn.dojotoolkit.org/src/dojox/trunk/gfx/svg.js这里是VML适配器:http://svn.dojotoolkit.org/src/dojox/trunk/gfx/vml.js

虽然我自己没有尝试过,但你可能会研究的另一个库是Ample SDK,它与SVG Web的工作方式类似,开发人员针对常规SVG DOM API进行编程,而不是特定的JavaScript库公开的API。与SVG Web一样,为了实现这一点,它在内部使用了shadow DOM。但是,它与SVG Web不同,它不使用Flash,而是在IE内部委托给VML。

答案 1 :(得分:1)

我同时使用了svgweb和Raphael。我发现svgweb在向DOM添加元素和从DOM中删除元素时会有很糟糕的表现(即使使用suspendRedraw)。 Raphael不完全支持整个SVG规范。

我发现完全足够的唯一解决方案是使用Google Chrome Frame来支持SVG。它是无缝的,它甚至可以修补错误的javascript!

它适用于IE6 +以及本身不支持SVG的所有其他浏览器。

http://code.google.com/chrome/chromeframe/