ウェブサイト ベースのドロップダウン メニューの jquery コードを変更しようとしています。具体的には、Android ブラウザー ビルド 4.4.2 Samsung Galaxy S4 で発生する時期尚早の touchcancel イベントの回避策に取り組んでいます。
これが私が作業しようとしているコードです:
jQuery(document).ready(function ($) {
'use strict';
$('.taptap-by-bonfire ul li ul').before($('<span><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve"><polygon id="arrow-24-icon" points="206.422,462 134.559,390.477 268.395,256 134.559,121.521 206.422,50 411.441,256 "/></svg></span>'));
$(".menu > li > span, .sub-menu > li > span").on('touchstart click', function(e) {
e.preventDefault();
if (false == $(this).next().is(':visible')) {
$(this).parent().siblings().find(".sub-menu").slideUp(300);
$(this).siblings().find(".sub-menu").slideUp(300);
$(this).parent().siblings().find("span").removeClass("taptap-submenu-active");
}
$(this).next().slideToggle(300);
$(this).toggleClass("taptap-submenu-active");
})
$(".menu > li > span").on('touchstart click', function(e) {
e.preventDefault();
if($(".sub-menu > li > span").hasClass('taptap-submenu-active'))
{
$(".sub-menu > li > span").removeClass("taptap-submenu-active");
}
})
$(".taptap-menu-button-wrapper").on('touchstart click', function(e) {
if($(".menu > li > span, .sub-menu > li > span").hasClass('taptap-submenu-active'))
{
$(".menu > li").find(".sub-menu").slideUp(300);
$(".menu > li > span, .sub-menu > li > span").removeClass("taptap-submenu-active");
}
})
});
ほとんどのデバイスとほとんどのブラウザーで問題なく動作します。その特定の Android ブラウザーでのみ、メニューがドロップダウンし、すぐに再びスライドアップします。時期尚早の touchcancel イベントが発生していると想定しています。さまざまなことを試しましたが、これらすべての要素を持っているようには見えず、何を試してもそのデバイスでタッチキャンセルが起動しません。
Android ブラウザでこの問題を回避するためにできることはありますか?