我试图弄清楚我可以使用哪些Javascript API来实现对回到iOS2的Mobile Safari的支持。我在任何地方都找不到一个列表,该列表显示每个新版本的iOS附带哪些版本的Mobile Safari。我正在寻找可以追溯到iOS2的完整列表。
谢谢!
[编辑:是的,我知道并且喜欢功能检测。但是,我有一组需要支持的目标浏览器,我只需要验证我提供的后备功能可以覆盖我的目标受众,并且不需要提供其他麻烦的后备功能。]
Answers:
由于这已经是Google的热门话题,因此我们应该在此处开始列出。我将这个答案作为社区Wiki。顺便说一句,我正在从设备的用户代理字符串中提取这些信息。浏览器版本取决于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
10.3.4 - Mobile Safari 10.0 - iPhone 5
11.2.5 - Mobile Safari 11.0
12.1.4 - Mobile Safari 12.0
12.4.4 - Mobile Safari 12.1 - iPhone 5S, 6
13.0 - Mobile Safari 13.0
这个人的名单非常有用: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”
我也找不到完整的清单。到目前为止,我发现最好的是来自Apple的一些Safari文档:
祝好运!
[更新]
尽管这仍然不能回答问题,但至少可以说明WebKitgetBoundingClientRect()
在2009年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