ノンカフェインであなたにやさしい

Ruby,Rails,HTML,CSS,Reactなど

iOS UIWebViewでjQueryのclickイベントが重複して発火する

※UIWebViewは2020/12移行更新できなくなりますのでWKWebViewへのアップデートが必要です
https://developer.apple.com/news/?id=12232019b

UIWebViewで以下のjQueryのページを動かすとクリックイベントが2回発火してしまう場合がありました。 ※1回しか発火しないときもある

$('#btn').on('click', () => {
  console.log('fire!');
});

対応

touchend でも発火させ伝播を止める。
stopPropagation, preventDefault だけだと発火してしまうときがあった

$('#btn').on('touchend, click', (e) => {
  # デフォルトアクション、伝播の中断
  e.stopPropagation();
  e.preventDefault();
  console.log('fire!');
});

そもそも WKWebView に書き換えることで回避することができます。