2011-12-25 6 views
42

私は、Mobile SafariのサポートをiOS2に戻すために使用できるJavascript APIを調べようとしています。モバイルサファリのバージョンがiOSの各新バージョンに同梱されていることを示すリストはどこにも見つからなかった。私は包括的なリストを探しています。これはiOS2にまで及んでいます。iOSの各バージョンにはどのバージョンのモバイルサファリが付属していますか?

ありがとうございます!

[編集:はい、私は知っていると機能の検出が大好きです。しかし、私はサポートする必要のあるターゲットブラウザーを用意しています。私が提供したフォールバックが対象ユーザーをカバーし、厄介なハックである追加のフォールバックを提供する必要はないことを確認する必要があります)]

答えて

70

を「Safariは5.0.2」として知られていることを説明し、我々はここでリストを開始する必要があります。私はこれをコミュニティの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 
11.2.5 - Mobile Safari 11.0 
+8

IOSのsafariはアップデートを受信しますか?もしそうならば、デバイスに含まれているストックバージョンと、最新のサポートされているSafariのバージョン(各デバイス/ IOS)をリストアップするのもいいでしょうか? – Jeroen

+0

私の知る限り、SafariのアップデートはiOSアップデートとしてのみ提供されます。 –

2

デバイスやOSの検出を行うのではなく、機能の検出が必要です。より豊かな経験を提供し、特定のバージョンでサポートされていない機能を追加するカスタムコードを提供することができます。この方法では、ターゲットとする特定のデバイスを超えたサポート方法を提供します(通常、特定のユーザーエージェントのコードを分岐するのではなく、古いjs実装のサポートをバックフィルするため、条件付きベースでの将来見通しのサポート)。

例えば、最新版のデスクトップ&モバイルSafariでは、文脈をクロージャーにバインドする機能として、.bind()を提供していません。これは、Function.prototype.bindを使用して検出および処理できます。存在しない場合は、古いブラウザに機能を提供する実装を提供します。 http://www.modernizr.com/のようなライブラリを使用すると、この作業に大きく役立ちます。 http://developer.apple.com/library/safari/navigation/#section=Libraries&topic=Safari%20DOM%20Additions%20for%20iOS

+0

はい!機能の検出は重要であり、機能をテストする正しい方法です。しかし、私はバージョン1.8のjQueryから機能をカットしようとしています。http://bugs.jquery.com/ticket/10996と、jQueryのすべてのブラウザにgetBoundingClientRectが存在することを確認できれば、大きなコードを削除できますサポート。たとえば、あなたは、document.createElement()を検出する機能を持たないでしょうか?私は、getBoundingClientRectがそれ以上のサポートテストを保証するほどに成熟しているかどうか、また不要なフォールバックが必要とする可能性がある4つの他のサポートテストを調べようとしています。ありがとう! –

+0

もう少し文脈がありましたら、ここで私が提出したプルリクエストがあります。 https://github.com/jquery/jquery/pull/642 –

+0

ああ私はそれを手に入れます。私はあなたが探しているリストが意味のある方法で存在するとは思わない。これは、古いSDKをダウンロードしてシミュレータで実行する必要があるものの1つかもしれません。モバイル版はデスクトップビルドと同じであるはずです(つまり、10.7のSafari 5.1はiOS 5.1のSafariと同じになっているはずです)、マッピングを行うことができます。私のコメントがsnarky、btwであることを意味しませんでした:) – tkone

0

あなたが見ていることを具体的なAPIのがある場合は、caniuse.comがどのように見つけるための素晴らしいリソースです:iOS版の特定のバージョンに関連付けられているいくつかの特定のDOMイベントがあるとされていること

はるか後方にAPIがサポートしています。

幸いです!

3

包括的なリストも見つかりませんでした。私がこれまでに見つけた最高のものは、AppleのSafariからいくつかのドキュメントです:

http://developer.apple.com/library/IOs/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html

幸運!

[更新]

WebKitのは、2009年

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

+0

これは、iOS版のユーザーエージェント文字列を実際に表示しています。これをWebkitのバージョンに戻すことができます。これで十分です! –

12

のFebuaryにgetBoundingClientRect()のサポートを追加したときに、この男のリストは本当に便利です、これはまだそれが、少なくとも告げる質問に答えていませんが:http://www.somegeekintn.com/blog/stuff/iosvers/

追加情報が必要な場合は、useragentstring.comのSafariバージョンをデコードすることができます。

http://www.useragentstring.com/Safari5.0.2_id_18120.phpは、Safariのバージョン6533.18.5が、これは既にGoogleのトップヒットであるので

関連する問題