在Android浏览器上进行早期touchcancel事件的解决方法

时间:2015-04-26 04:37:51

标签: javascript jquery web android-browser touchstart

我试图修改基于网站的下拉菜单的jquery代码。 具体来说,我正在研究Android Browser Browser build 4.4.2 Samsung Galaxy S4上触发的早期触摸事件的解决方法。

以下是我尝试使用的代码:

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浏览器的这个问题?

0 个答案:

没有答案