我知道Raphael.js使用svg,它的完全交叉浏览器:它甚至适用于ie6!所以我想必须有一些js修复允许在每个浏览器中使用svg,对吧?我不需要像Raphael这样的整个图形和动画库,只需要在IE等中支持SV。
我刚刚阅读了关于SVGweb的内容,其中涉及Google的开发,但显然它使用的是Flash,所以它不是跨浏览器安全的。
答案 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的所有其他浏览器。