Google

2013年9月22日日曜日

iOS7のMobile Safri挙動がおかしい件

今回も小ネタです。

開発中にiOS7のバージョンアップが来て対応に大わらわ。
iOS6の時よりも改変大杉。

けど挙動を早速まとめてくれている人が居たので、状況把握は迅速でした。
以下のサイトからどうぞ。

Breaking the Mobile Web
http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review
(この記事は随時更新中のようです)

今回の変更で色々困ったことはあったんですが、特にAlertやConfirmがホーム画面登録時には一切動作しなくなったのが最悪でした。
お陰で自前のダイアログ制御を書くはめに(泣)

さらにもう一つ困ったのがviewport。
これはご存知の通り拡大サイズやスクロールなどを制御するんですが、こんな現象が発生しています。

  • ステータスバーの表示が以前と変わってしまうようになった
  • 上下に黒塗りエリアを出して縦を480にする機能が効かなくなった
    • (ボディの上マージンが0で縦幅は画面サイズのような状態になる)
前者は別にいいとして。
後者は普通のWebページならいいんでしょうが、速度や見た目等色々調節しなくちゃならないゲームだと、iOS7のiPhoneだけ独自調整が必要という事になります。
今までどおり、iOS7の判定は以下の様な構文で識別できるので、処理を書き換える事も可能ではあります。

 if (navigator.userAgent.match(/OS 7/i)) {
  console.log("iOS7です");
 }

無理やりbodyのtopを下げればiOS6の挙動と同じにはなります。
(bodyの背景を真っ黒にすれば更にそっくりに)

大した内容ではありませんがご参考まで。
他の内容があったらまた追記します。

9/25追記:
海外のコミュニティでは仕様というよりβ版から修正されていないバグという見解だそうです。
ホーム画面アプリからリンクでMobile Safariに遷移できなくなったのも同じようでorz
なんというか、ジョブズ不在のアップルはバグだらけです。