Mobile Safariのクリックイベントを高速化「fastClick.js」
fastClick.jsはMobile Safariのクリックイベントにおける遅延を改善するソフトウェアです。
iPhoneのMobile Safariにおいてリンクをタップした時の動作が重たい(遅い)感じがしたことはないでしょうか。実際、300msくらいの遅延が発生しているようで、Webブラウザゲームなどではもっさりした動作に感じてしまいます。そこで使ってみたいのがfastClick.jsです。
テスト画面です。上が高速処理を施したもの。下は施していないものになります。
クリックする度にカウントされますが、キャッシュが使われていると思われてもやはり上のが速いです。
具体的な処理についてはソースを見ていただくとして、体感として速くなっているのが分かるかと思います。touchendなどのイベントでは遅くならないらしいですが、clickイベントを使っている場合には効果的なようです。
fastClick.jsはJavaScript製、MIT/GPLのオープンソース・ソフトウェアです。
MOONGIFTはこう見る
この遅延の原因としては、Mobile Safariのタップ操作に伴ってスクロールや長押し判定、ダブルタップなどの判定を行った後でクリックイベントであるために遅延が発生している模様です。スクリーンを直接触って操作する関係上、それは否めないのかもしれません。touchstart/touchendイベントであればそのような判定がいらないので速いようです。
スマートフォンにおいてもっさりした動作は致命的です。小さなデバイスだけにぬるぬる動き、タッチやスクロールに対して俊敏に反応しなければなりません。ハード的な制限もあるでしょうが、ソフト的に改善できる部分もまだまだありそうです。こういった改善の探求はとても面白いです。