每个版本的iOS都有哪些版本的移动版Safari?
我试图弄清楚我可以使用哪些Javascript API来实现对iOS2的支持。 我还没有find任何地方的列表,显示了每个新版本iOS的Mobile Safari版本。 我正在寻找一个全面的列表,一直回到iOS2。
谢谢!
[编辑:是的,我知道和喜欢function检测。 不过,我有一套我需要支持的有针对性的浏览器,而且我只需要validation我提供的回退是否覆盖了我的目标受众,而且我不需要提供额外的回复,这些回复是繁琐的黑客)。]
由于这已经是Google的热门话题,所以我们应该在这里开始一个列表。 我会把这个答案作为一个社区维基。 顺便说一句,我从设备的用户代理string拉这些。 浏览器版本依赖于iOS版本,不依赖于设备。 但是,当一个手机不支持更高的iOS版本时,会列出:
3.2.2 - Mobile Safari 4.0.4 4.3.3 - Mobile Safari 5.02 - iPhone 3g 5.0 - Mobile Safari 5.1 5.1 - Mobile Safari 5.1 6.0 - Mobile Safari 6.0 - iPhone 3gs 7.1 - Mobile Safari 7.1 - iPhone 4 8.3 - Mobile Safari 8.0 9.2.1 - Mobile Safari 9.0 - iPhone 4s
这家伙的名单是非常有用的: http : //www.somegeekintn.com/blog/stuff/iosvers/
如果您需要额外的信息,您可以解码useragentstring.com上的Safari版本,例如:
http://www.useragentstring.com/Safari5.0.2_id_18120.php解释说,Safari 6533.18.5被称为“Safari 5.0.2”
我也找不到一个全面的列表。 到目前为止我发现的最好的东西是来自苹果的一些Safari文档:
祝你好运!
[更新]
虽然这仍然没有回答这个问题,但至less在2009年2月WebKit增加了对getBoundingClientRect()
支持的时候,它至less说明了这个问题。
您应该做function检测,而不是进行设备或操作系统检测,这将提供更丰富的体验,并且可以提供自定义代码来添加特定版本不支持的function。 通过这种方式,您将提供超出您所定位的特定设备的支持方式(通常情况下,由于不是为特定的用户代理分支代码,所以通常会变得更加简单,您可以通过提供对旧版js实现的支持有条件的前瞻性支持)。
例如,最新版本的桌面和移动版Safari不提供.bind()
function来将上下文绑定到闭包。 这可以使用Function.prototype.bind
进行检测和处理,如果不存在,则提供一个为旧版浏览器提供function的实现。 使用像http://www.modernizr.com/这样的库将大大有助于这一努力。;
这就是说有一些特定的DOM事件绑定到某些版本的iOS: http : //developer.apple.com/library/safari/navigation/#section=Libraries&topic=Safari%20DOM%20Additions%20for%20iOS
如果您正在查看特定的API,caniuse.com是了解API支持多久的一个很好的资源。
祝你好运!