Javascript SVG:获取路径的精确边界框?

Javascript SVG:获取路径的精确边界框?,javascript,browser,svg,Javascript,Browser,Svg,至少WebKit中的SVGPath.getBBox()实现似乎有点劣质;有没有更好(更便宜)的方法比在路径上行走(或随机反复采样),手动计算其可能的边界框,以获得良好的读数 (或)显示了后者的一个示例,当我在几个不同的相当现代的浏览器中运行它时,本机实现中有显著的变化。Opera是最好的,Firefox是好的,Chrome/Safari是坏的: 616.1572 677.0540 127.6856 126.8793 - sampled, gathering random coords for 5

至少WebKit中的
SVGPath.getBBox()
实现似乎有点劣质;有没有更好(更便宜)的方法比在路径上行走(或随机反复采样),手动计算其可能的边界框,以获得良好的读数

(或)显示了后者的一个示例,当我在几个不同的相当现代的浏览器中运行它时,本机实现中有显著的变化。Opera是最好的,Firefox是好的,Chrome/Safari是坏的:

616.1572 677.0540 127.6856 126.8793 - sampled, gathering random coords for 5s (reference)
616.1569 677.0538 127.6860 126.8796 - opera 11.64 build 1403
616.1563 677.0547 127.6875 126.8789 - firefox aurora 15.0a2 (2012-06-15)
614.2805 673.9761 136.2089 129.9573 - chrome canary 21.0.1176.0
614.2805 673.9761 136.2089 129.9573 - safari 5.1.7 (7534.57.2)
或者,参考边界框的左/上/宽/高变化(百分比):

0.00005% 0.00003% 0.00031% 0.00024% - opera
0.00015% 0.00010% 0.00149% 0.00032% - firefox
0.30458% 0.45460% 6.67522% 2.42593% - chrome
0.30458% 0.45460% 6.67522% 2.42593% - safari

事实证明,它实现了一个非常优秀的方法,特别是在有
元素的情况下;它似乎在代数上是精确的,而且速度很快。添加到比较测试页面。

如果您指定要使用边界框的内容以及要分析的路径类型,这可能会帮助我们建议适当的解决方案或更好的近似方法。我目前的主要兴趣是为单路径元素SVG:s导出准确的
viewBox
属性,如链接示例中所示,根据您在问题中链接的代码,Firefox的原生getBBox现在与Raphael的一样精确,尽管Chrome仍差几个像素。