iOS6のSafariはAjax周りで変な挙動をするようです

こんにちは、ころすけ(@wg_koro)です。

iOS6

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。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください