こんにちは、ころすけ(@wg_koro)です。
iOS6がリリースされましたね。マップ機能がアレだとか、Facebook連携ができるようになったとか、色々楽しそう(?)な話題が飛び交ってますw
楽しそうな情報以外にも、こんな情報が。iOSのSafariが変な挙動するらしい。
iOS 6のSafariではAjaxの動作が異常–すでにデベロッパたちは周知 iOS 6のモバイルSafariに、おかしな動作がある。最初は自分の誤操作かと思ったが、どうやらデベロッパたちはすでに知っている本物のバグのようだ。症状は、画面上部にあるロード現況の回転表示、ページのあらゆる部分のロードが終わると回転が止まる小さなアイコンだ。しかしWebサイトによっては、このおちびさんがいつまでも止まらない。ページのロードが、いつまでも終わらないみたいに。 |
上記Techcrunchでは
O’Loneによると、iOS 6ではこの部分の処理が全体的に正しくない。ブラウザとサーバのあいだに複数の接続を開けずに、一度に一つの接続しか開けない。だから、最初のリクエストが完全に、あるいはタイムアウトで終わるまで、次のたとえば画像のリクエストは待たされる。彼は今、AppleのSafariのチームと、この問題でコミュニケーションしているそうだ。
と書かれてますが、Hacker Newsでは
I’m using long polling in our application and I don’t see that one connection per server restriction here.
I did however see that safari was not leaving the loading state (and thus not firing any of the loaded events, nor hiding the URL bar) if I started the long polling connection before the page was fully loaded.
と書いてますね。
ページが完全にロードされる前にlogn pollingの接続がスタートしてるっぽい。接続をsetTimeout()で少し後ろにずらしてみたら正常に動いたと書かれています。
ふと思い出しましたが、PC版のWebkit(Safari, Chrome)にもページロードのタイミング、イベント周りで変な挙動があったような・・・。ページのDOM構築が完了したとイベントあがるのに、実際は完了してない、的なモノ。昔、同僚がハマってました。
このバグ、将来ハマりそうなバグなので早めに直るといいですね…。というか直してくださいお願いしますアップルさん orz。