« \(f(x)\) のとりうる値の範囲 | トップページ | touchEvent の奇妙な振る舞い⇒迂回策 »

2020年2月28日 (金)

スマートフォンでの <span class="sl_ft" style="font-weight:normal">LongDriver</span> の不具合

昨年7月にフットボールのプレイブックソフト LongDriver がスマートフォンでは使えないことが分かり、その時、一応使えるようにしたのですが、先日、久しぶりに使ってみたら、再び使えなくなっていました。(それとも、昨年のデバッグが間違いだったのでしょうか?)

不具合の症状は次のようなものです。

  1. 選手のドラッグおよびフィールドのスクロールに不具合有り
    • 初めの1回は操作出来るが、それ以降は反応無し
    • その反応無しの時 touchstarttouchend のイベントリスナーは呼び出されるが touchmove のイベントリスナーは呼ばれない
  2. イベントリスナーで evt.preventDefault() を実行しようとすると下記のエラーが発生する
    • Ignored attempt to cancel a touchstart event with cancelable=false, for example because scrolling is in progress and cannot be interrupted. (cancelable=false である touchstart イベントをキャンセルすることが無視された)

別のソフトでビリヤードの配置図ソフト FlatTable でも上記 (2) のエラーは発生していますが (1) の不具合は有りません。1つの DOM 要素に対して LongDrivertouchstartclick のイベントリスナーを登録しているのに対して FlatTable では click は登録していないことが両者の違いになっていると思われます。そこで、 LongDriver でも click のイベントは使わずに touchstarttouchend でエミュレートしてみようと思っています。

上記 (2) については FlatTable でもエラーが発生するので evt.preventDefault() をコメントアウトしたところ、エラーの発生が抑制されました。また、コメントアウトしたことによって何か新たな不具合が生じた様子も見られませんでした。 evt.preventDefault() の実行は意味が無かったということでしょうか?(←画面がスクロールすることが分かった)

« \(f(x)\) のとりうる値の範囲 | トップページ | touchEvent の奇妙な振る舞い⇒迂回策 »

フットボールのプレイ図ソフト」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« \(f(x)\) のとりうる値の範囲 | トップページ | touchEvent の奇妙な振る舞い⇒迂回策 »