Androidのタッチイベントが2回発生する #129

Closed
tmoriizumi opened this Issue Nov 15, 2012 · 9 comments

Projects

None yet

5 participants

@tmoriizumi

Android4.0系からAndroid4.1.1にアップデートした端末のWebviewで、
addEventListener.でtouchstartとtouchendにイベントを登録すると、
それぞれ2回イベントが実行されます。
アップデートする前のバージョンでは発生していなかったと思います。
ブラウザでも発生しました。

機種:
SAMSUNG GALAXY NEXUS(SC-04D)
バージョン:
AndroidOS 4.1.1

@tmoriizumi

enchant.jsのバージョンは0.5.1なら問題なかったのですが、0.5.2からおかしいようです

@rtsan
Collaborator
rtsan commented Nov 16, 2012

ありがとうございます。
Galaxy Nexus 4.1.2で確認しましたが、DOMのtouchstartイベントとmousedownイベントの両方がブラウザから発行されているようです。
#102
ed13d47
の変更により2度イベントenchant.jsのイベントが発行されてしまうようです。

@sidestepism
Collaborator

The user agent may dispatch both touch events and mouse events [DOM-LEVEL-2-EVENTS] in response to the same user input. If the user agent dispatches both touch events and mouse events in response to a single user action, then the touchstart event type must be dispatched before any mouse event types for that action. If the preventDefault method of touchstart or touchmove is called, the user agent should not dispatch any mouse event that would be a consequential result of the the prevented touch event.

このような記述を見つけました。

http://www.w3.org/TR/touch-events/#mouse-events

  • touch, mouse 両方出すときがある
  • その時は touch が先
  • touch で preventDefault されたら mouse は発行しない

とのことです。

@sidestepism sidestepism added a commit that referenced this issue Nov 20, 2012
@sidestepism sidestepism hotfix for #129 db065f4
@sidestepism
Collaborator

touch系のイベントを preventDefault したものが hotfix/#129 ブランチにあります。
実機でテスト後 master に merge します。

@sidestepism
Collaborator

v0.5.3 としてリリースしました。

@rtsan rtsan added a commit that referenced this issue Feb 28, 2013
@rtsan rtsan Revert "hotfix for #129" for issue 174 #174
This reverts commit db065f4.
f47a153
@rtsan rtsan added a commit that referenced this issue Feb 28, 2013
@rtsan rtsan fix #129 75eecad
@rtsan rtsan closed this Mar 4, 2013
@sidestepism
Collaborator

https://twitter.com/maxcaffy/status/326288486833459202
Twitter でこのような文章を見つけました

きっと何処かで見守っていてくださる #enchantjs 創造主さんへ
お手すきのときにでも v0.5.xブランチにv0.5.3をリリースしてくだされー
https://t.co/FAejtDZ5ZQ
enchant0.5.2+Android4.2でタッチイベントが~暴走~

@sidestepism
Collaborator

v0.5.x ブランチ、Galaxy Note 2 (docomo SC-02E, Android 4.1.2) では再現しませんでした。
検証したのは以下のミラーの exmaples です。
http://lib.stepism.com/enchant/branches/v0.5.x/

@digitarhythm

SC-04Dでは、ver0.8.0でもこの現象が起こります。

@Ashibehair

enchant.js v0.8.1 でも、 303SH(Android 4.2.2) では同様に問題が発生します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment