【jquery】iOS用クリックイベント「touchend」で二重にイベントが発火していた件【iPad】

デザイナーのオッコです。

今から、私が悩んだiPadでの挙動についての解決策をお話ししようと思います。

目次

iPadでプルダウンをタップするとすぐ閉じてしまう

iPadでヘッダメニューにあるプルダウンをタップすると、開いたらすぐ閉じてしまう、というバグの調査を行いました。

ちなみにPCでは正常です。

始めに原因からお話しすると、以下でした。

clickイベントでSlideToggleメソッドが発火する処理の他に、touchendイベントでもSlideToggleメソッドを書いていたためiPadでは二重にイベントが発火されていた。

調べてみるとまずこんな記事が。

SlideToggleに関しまして-teratail

私はまずSlideToggleが悪さをしていると見当をつけ、関連した記事を探していました。

そしてこの回答が参考になり、iPad/iPhoneではclickイベントが正常に操作しないとのこと。

私はこの解決策に従い、「cursor: pointer;」をcssにつけようと試みました。

すると、「cursor: pointer;」は既に付与されている……。

そこで調査を進めると、スマホ用イベントtouchendの存在を知りました。

touchendとは、「タップした指が離れたときに発火する」イベントです。

バグの起きているソースコードにもこのイベントが書かれており、デバッグしたところclickイベントの後すぐこちらも発火していたことが発覚しました。

このイベントを削除し、iPadでも期待通りの動作をするようになりました。

PCのエミュレータでも再現しなかったですし、なかなかiPad実機でテストする機会も少ないので意外と気づかないですよね。

以上調査報告でした。

ちなみに解決した後に、似たようなバグに関する記事もいくつか見つけました。もっと早く見つけたかったです。

jQueryで、on()にclickとtouchstartを併記したら、スマホでのタップイベントの動作がおかしくなった

【jQuery】hoverとtouchの共存について模索したこと

ちょっと古いですけど以下の記事も面白かったです。

株式会社シーポイントラボ|浜松の...
【jQuery】スマートフォンでのタッチイベントについて 本日の記事は、何だか久しぶりな気がするjQueryについての技術ネタ! スマートフォンサイトで、地図とマップピンを表示させることがあったのですが、その際に、「ドラッグ...

関連記事紹介

APICE INTELIGENCE
window.onloadがipad/iphoneで動かなかった話【javascript】 | APICE INTELIGENCE デザイナーのオッコです。 レスポンシブ対応のため、iPad proでテストを行ったところ、fullCalendarが出るはずの部分がまっさらでカレンダーが表示されていませんでした。i...
tecn
iOSでリンク付きの画像をタップしたときにデフォルトで青くなってしまうのを解消 | tecn こんにちは、コーダーのオッコです。 直しちゃったので参考になる画像がないのですが、スマホ実機でリンクがついた画像をタップすると、タップした領域がデフォルトで青く...
APICE INTELIGENCE
クリックで開閉するヘッダのプルダウンコード(任意の場所をクリックして閉じられる処理あり) | APICE IN... コーダーのオッコです。 ヘッダのプルダウンの挙動ってタグ構造に左右されたりして地味に時間を取られるので、自分なりの書き方をまとめておきます。 ヘッダの右上にプルダ...

システム開発はアピステクノロジーへ

アピステクノロジーでは、システム開発をはじめ、システムパッケージの販売にも力を入れています。

「IT TOOL」をご存じですか?

既に標準の機能が実装されているシステムパッケージを、貴社用にデザインカスタマイズし提供します。

さらに、IT導入補助金の利用で価格を大きく抑えることも可能です。

実績多数、低価格で本格的なサイトができると好評いただいております。

詳しくは弊社HPをご覧ください。

アピステクノロジーの実績紹介はこちら

ITツール紹介ページはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次