jQueryでタップ系のイベントを確認してみる
スマホでは、clickのイベントが300ミリ秒ほど遅延するとのことなので、
タップ関連のイベントを確認し、プラグインを試してみる。
確認用のHTML
※mousemoveとtouchmoveはうざいのでコメントアウトしている
<html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,user-scalable=no"> <script src="https://code.jquery.com/jquery-2.2.0.js"></script> <style> #box { margin: 20px; width: 160px; height: 160px; background-color: #ccf; border-radius: 40px; } #log { position: fixed; top: 0; right: 0; padding: 10px; background-color: #eee; } </style> </head> <body> jQueryのイベント確認<br> <div id="box"></div> <div id="log"></div> <script> var events = [ "click", "dblclick", "contextmenu", "mousedown", "mouseup", "mouseover", "mouseenter", "mouseout", "mouseleave", //"mousemove", "touchstart", "touchend", //"touchmove", "touchcancel" ]; for (var i in events) { $("#box").on(events[i], function(event) { $("#log").prepend("<div>" + event.type + "</div>"); }); } </script> </body> </html>
下記のような感じで確認できる。
確認ページ
jQuery mobileでタップ関連のイベントを追加してみる
jQuery mobileのサイトからダウンロードする。
jQuery Mobile https://jquerymobile.com/
今回はTouchのイベントのみ試したいので、 [Custom download]で、Touchにチェックを入れて、ダウンロードする。
headにjQuery mobileのjsを追加し、
<script src="js/jquery.mobile.custom.js"></script>
スマホ系のイベントを追加する
・・・ var events = [ "click", "dblclick", "contextmenu", "mousedown", "mouseup", "mouseover", "mouseenter", "mouseout", "mouseleave", //"mousemove", "touchstart", "touchend", //"touchmove", "touchcancel", // 追加 "tap", "taphold", "swipe", "swipeleft", "swiperight", ]; for (var i in events) { ・・・
タップ系のイベントが発生しているのが確認できる。
確認ページ
Hammerでタップ関連のイベントを追加してみる
下記のサイトから、hammer.min.jsをダウンロードする。
Hammer.JS - Hammer.js http://hammerjs.github.io/
headにHammerのjsを追加し、
<script src="js/hammer.min.js"></script>
下記のコードを追加する。
var hammer_events = [ "tap", "doubletap", "press", "swipe", "swipeleft", "swiperight", "pan", "pinch", "pinchin", "pinchout", "rotate", ]; var hm = new Hammer(document.querySelector("#box")); hm.get('pinch').set({ enable: true }); hm.get('rotate').set({ enable: true }); for (var i in hammer_events) { hm.on(hammer_events[i], function(event) { $("#log").prepend("<div>" + event.type + "</div>"); }); }
タップ系のイベントが発生しているのが確認できる。
確認ページ
Hammer-timeでclickの遅延を無くしてみる
下記のサイトから、hammer-time.min.jsをダウンロードする。
Hammer.JS - Hammer.js http://hammerjs.github.io/
headにHammer-timeのjsを追加し、
<script src="js/hammer-time.min.js"></script>
styleで「touch-action: none;」を指定する。
<div id="box" style="touch-action: none;"></div>
画像からでは分からないが、通常の場合と比べて、スマホでタップした時のclickイベントの発生が早くなっているのが確認できる。
確認ページ