イナヅマTVログ

[JavaScript] あれまぁAndroid 4.2.2でのtouchstartとclick

| 0件のコメント

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

コメントを残す