我正在试图弄清楚我可以用什么Javascript API来支持Mobile Safari回iOS2。我没有在任何地方找到一个列表,显示每个新版本的iOS随附的Mobile Safari版本。我正在寻找一个可以追溯到iOS2的全面列表。
谢谢!
[编辑:是的,我知道并喜欢功能检测。但是,我需要支持一组有针对性的浏览器,我只需要验证我提供的后备覆盖了我的目标受众,而且我不需要提供额外的后备,这些都是繁琐的黑客攻击。)
答案 0 :(得分:86)
由于这已经是谷歌的热门话题,我们应该在这里开始一个列表。我将这个答案作为社区维基。顺便说一下,我从设备的用户代理字符串中提取这些内容。浏览器版本取决于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
11.2.5 - Mobile Safari 11.0
答案 1 :(得分:14)
这个人的名单非常有用: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”
答案 2 :(得分:3)
我也找不到全面的清单。到目前为止,我发现的最好的东西是来自Apple的一些Safari文档:
祝你好运![更新]
虽然这仍然没有回答这个问题,但至少可以说明WebKit在2009年2月增加了对getBoundingClientRect()
的支持。
答案 3 :(得分:2)
您应该进行功能检测,而不是进行设备或操作系统检测 - 它将提供更丰富的体验,您可以提供自定义代码来添加特定版本不支持的功能。这样,您将提供超出您所定位的特定设备的支持方式(并且它通常最终变得更容易,因为不是为特定用户代理分支代码,而是通过提供对旧js实现的支持有条件的前瞻性支持。)
例如,桌面版的最新版本&移动版Safari不提供.bind()
功能来将上下文绑定到闭包。这可以使用Function.prototype.bind
检测和处理,如果不存在,则提供向旧浏览器提供功能的实现。使用像http://www.modernizr.com/这样的库将有助于这项工作。
据说有一些特定的DOM事件与某些版本的iOS相关联: http://developer.apple.com/library/safari/navigation/#section=Libraries&topic=Safari%20DOM%20Additions%20for%20iOS
答案 4 :(得分:0)
如果您正在查看特定的API,caniuse.com是了解API支持多久的绝佳资源。
祝你好运!