GALAXY NEXUS SC-04Dだけ挙動が変。
どうも他の端末と異なる。
Android 4.2.2
OS のせいなのか GALAXY NEXUS SC-04D端末固有の問題なのかがわからない。
原因はaタグにつけたイベント設定。
jQuery 使ってます。
$( "#some-id" ).on( "touchstart click", function ( e ){ e.stopPropagation(); e.preventDefault(); console.log( e.type ); } ); |
ワンソースでPCもスマホもという贅沢仕様のため touchstart と click の2種類のイベントを設置しました。
GALAXY NEXUS SC-04D だけタップすると log が2回出力される。
touchstart と click。
ゆっくり触れると touchstart だけ。
う〜〜ん。
使用した jQuery は 2系。
jQueryが悪いのかな〜。
いやいやそんなこと無いはず。
Galaxy S2 SC03-D (Android 4.0.4) だと touchstart だけ。
Xperia SO-01B (Android 2.3.3) も touchstart だけ。
Google大先生にお聞きし、enchant.js のスレッド発見。
Androidのタッチイベントが2回発生する
スレッド情報によれば
touch, mouse 両方のイベントに反応することがある。
touchが先でmouseが後。
touchでpreventDefaultするとmouseは発行しない。
らしい。
確かにtouchが先。
それはわかる。
click は double click との兼ね合いで若干遅延するから。
preventDefault してるけど GALAXY NEXUS SC-04D(Android 4.2.2) は mouse もイベント発行されてしまう。
OS と端末の組み合わせなんかなー?
touchstart をとりました
clickってtouchstartより反応が鈍い感じになるけどしょうが無いかなとあきらめた。
【追記】
Nexus 7 (Android 4.3) Chrome は touchstart か click のどちらかが発生する。
どちらかだからいいのか。
Androidは不思議ちゃん。
ちっともかわいくないけど…
update
タイトル変更しました。4.x -> 4.2.2