【问题标题】:What version of mobile safari comes with each version of iOS?每个版本的 iOS 都附带什么版本的移动 Safari?
【发布时间】:2012-01-27 12:24:05
【问题描述】:

我试图找出我可以使用哪些 Javascript API 来实现对 Mobile Safari 的支持回到 iOS2。我还没有在任何地方找到一个列表来显示每个新版本的 iOS 附带的 Mobile Safari 版本。我正在寻找一个可以追溯到 iOS2 的完整列表。

谢谢!

[编辑:是的,我知道并且喜欢特征检测。但是,我有一组需要支持的目标浏览器,我只需要验证我提供的后备方案是否涵盖了我的目标受众,并且我不需要提供其他麻烦的后备方案。]

【问题讨论】:

    标签: javascript ios webkit mobile-safari


    【解决方案1】:

    由于这已经是 Google 上的热门歌曲,我们应该从这里开始列出。我会把这个答案变成一个社区维基。顺便说一句,我是从设备的用户代理字符串中提取这些的。浏览器版本取决于 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
    [...]    - [...]
    15.2     - Mobile Safari 15.2
    

    【讨论】:

    • IOS 上的 safari 是否收到更新?如果是这样,是否可以同时列出设备随附的库存版本以及每个设备/IOS 的最终更新或最新支持的 Safari 版本?
    • 据我所知,Safari 更新仅作为 iOS 更新提供。
    【解决方案2】:

    这家伙的名单真的很有用: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”

    【讨论】:

    • 第二个链接失效了。
    • 您可以转到主页:useragentstring.com 我希望这能持续更长时间。
    【解决方案3】:

    我也找不到完整的列表。到目前为止,我发现的最好的东西是来自 Apple 的一些 Safari 文档:

    https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html

    祝你好运!

    [更新]

    虽然这仍然不能回答问题,但它至少说明了 WebKit 何时在 2009 年 2 月添加了对 getBoundingClientRect() 的支持。

    http://trac.webkit.org/changeset/40837

    【讨论】:

    • 这实际上显示了 iOS 版本的用户代理字符串,我可以将其绑定到 webkit 的版本。这已经足够了!
    • 第一个链接失效了。
    【解决方案4】:

    您应该进行功能检测,而不是进行设备或操作系统检测——它将提供更丰富的体验,并且您可以提供自定义代码来添加特定版本不支持的功能。这样,您将提供超出您所针对的特定设备的支持方式(并且通常最终会更容易,因为您不是为特定的用户代理分支代码,而是通过提供回填对旧 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

    【讨论】:

    • 是的!特征检测很重要,是测试功能的正确方法。但是,我正在尝试从 jQuery 版本 1.8 bugs.jquery.com/ticket/10996 中删除一个功能,如果我可以验证 getBoundingClientRect 存在于 jQuery 支持的所有浏览器中,我可以删除大量代码。例如,您不会检测 document.createElement(),对吗?我正在尝试确定 getBoundingClientRect 是否足够成熟,不再需要对其进行支持测试,而其他 4 项支持测试可能是不必要的后备要求。谢谢!
    • 有关更多上下文,这是我提交的拉取请求,它证明了这个问题。 github.com/jquery/jquery/pull/642
    • 啊,我明白了。我不认为您要查找的列表以有意义的方式存在。这可能是您必须下载旧 SDK 并在模拟器中运行它的事情之一。或者,由于移动版本应该与桌面版本相同(即 10.7 的 safari 5.1 应该与 iOS 5.1 safari 相同),因此您可以进行一些映射。顺便说一句,我的评论并不意味着我的评论:)
    • 这可能会有所帮助:en.wikipedia.org/wiki/JavaScript,但很难找到关于此的可靠信息。圣诞快乐!
    • downvoted:好的建议本身但与问题完全无关。需要支持特定的浏览器可能是一项要求,或者可能需要记录在案。那是另一个话题。
    【解决方案5】:

    如果您正在查看特定的 API,caniuse.com 是一个很好的资源,可以帮助您了解 API 支持的时间。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多