【发布时间】:2012-12-23 09:42:48
【问题描述】:
测试浏览器/用户代理/客户端是否支持Raphael.js library的最简单、最可靠的方法是什么? Raphael 使用 Javascript 来创建和控制 SVG 矢量图形,或者,如果 SVG 不可用但 VML 可用(例如,在 Internet Explorer 版本 6 到 8 中),它会使用 VML 创建和控制等效图形。
一种方法是对 SVG 进行特征检测,然后,如果它不可用,则对 VML 进行特征检测。有一个 old question from 2009 的答案包括一些用于检测 VML 和 SVG 的代码。但是,cmets 表明它可能并非在所有情况下都有效,而且我确信自 2009 年以来发生了很多变化。此外,可能还有一种更简单的特定于 Raphael 的方法。
更简单的替代方法可能是使用一些 Raphael 内部标志或函数。它已经设置了是否在 SVG 模式或 VML 模式下运行的变量。这可以用来可靠地检测“两者都不是”的情况吗?
或者也许有一种基于创建一个空的 Raphael 对象并测试其属性或功能的可靠方法?
就一般背景而言,据我所知,唯一与 Raphael 不兼容的常见浏览器是 1.x 和 2.x 版本的 Android 库存浏览器,但是,我更喜欢使用功能检测而不是浏览器尽可能进行版本检测(除非有充分的理由说明在这种情况下这实际上是一个非常好的解决方案)。
【问题讨论】:
标签: svg cross-browser raphael feature-detection vml