javascript - 防止 Webapp 中的额外触摸

标签 javascript jquery ipad html web-applications

我的网络应用程序上的刷卡代码有问题。使用一根手指,页面之间的滑动完美无缺,但是,当我用第二根手指触摸并与第一根手指同时移动时,应用程序会混淆听哪个手指。这通常会导致事情变得非常错误。我怎样才能确保应用程序尊重的唯一触摸事件是由第一次手指触摸触发的?

我的滑动插件的代码如下所示:

(function($) {

        $.fn.movement = function(options) {


    var defaults = {
        threshold: { x: 150, y: 15 },
        mouseUp: function() {},
        mouseMove: function() { },
        mouseDown: function() { },
        scrollStart: function() { },
        scrollStop: function() { },
        scrollMove: function() { }
    };



    var options = $.extend(defaults, options);

    if (!this) return false;


    //alert(this.attr("id"));
    return this.each(function() {

        var me = $(this)

        // Private variables for each element
        var originalCoord = { x: 0, y: 0 }
        var lastCoord = {x: 0, y: 0 }
        var finalCoord = { x: 0, y: 0 }
        var velocity = { x: 0, y: 0 }
       function touchMove(event) {
                event.preventDefault();
                finalCoord.x = event.targetTouches[0].pageX // Updated X,Y coordinates
                finalCoord.y = event.targetTouches[0].pageY
                defaults.scrollMove(finalCoord);
                defaults.mouseMove(finalCoord,activeDirection());
        }

        function touchEnd(event) {
            var direction = stoppedDirection();
            defaults.scrollStop(finalCoord);
            defaults.mouseUp(velocity,direction);           
        }

        function touchStart(event) {
            originalCoord.x = event.targetTouches[0].pageX
            originalCoord.y = event.targetTouches[0].pageY
            lastCoord.x = originalCoord.x
            lastCoord.y = originalCoord.y
            finalCoord.x = originalCoord.x
            finalCoord.y = originalCoord.y
            defaults.scrollStart(originalCoord);
        }
        function activeDirection() {
            var direction = [];
            var vx = lastCoord.x - finalCoord.x;
            var vy = lastCoord.y - finalCoord.y;
            if (vy < 0 && (Math.abs(vy) > defaults.threshold.y))
                direction.push('down');
            else if (vy > 0 && (Math.abs(vy) > defaults.threshold.y))
                direction.push('up');
            if (vx < 0 && (Math.abs(vx) > defaults.threshold.x))
                direction.push('right');
            else if (vx > 0 && (Math.abs(vx) > defaults.threshold.x))
                direction.push('left');
            return direction;
        }

        function stoppedDirection() {
            var direction = [];
            velocity.x = originalCoord.x - finalCoord.x;
            velocity.y = originalCoord.y - finalCoord.y;
            if (velocity.y < 0 && (Math.abs(velocity.y) > defaults.threshold.y))
                direction.push('down');
            else if (velocity.y > 0 && (Math.abs(velocity.y) > defaults.threshold.y))
                direction.push('up');
            if (velocity.x < 0 && (Math.abs(velocity.x) > defaults.threshold.x))
                direction.push('right');
            else if (velocity.x > 0 && (Math.abs(velocity.x) > defaults.threshold.x))
                direction.push('left');
            return direction;
        }
        this.addEventListener("touchstart", touchStart, false);
        this.addEventListener("touchmove", touchMove, false);
        this.addEventListener("touchend", touchEnd, false);
        this.addEventListener("touchcancel", touchCancel, false);
       });
  };

})(jQuery);

最佳答案

为了更好地控制触摸事件,jQuery Mobile 是一个不错的选择。

http://jquerymobile.com/

关于javascript - 防止 Webapp 中的额外触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083859/

相关文章:

jquery - 在 jScrollPane 中搜索?

javascript - 随机化我追加到另一个 div 中的 div

ipad - 如何在不使用常量的情况下获取分组的 UITableViewCell 内容区域宽度

ios - 使用自动布局时增加 UITextField 高度

javascript - 如何在 AngularJS 的多个 Controller 上仅使用一个 $http 请求

javascript - 如何在图表js中绘制一条到最高数据点的线?

jquery - 数据表中渲染的性能问题

iPhone 5 隐藏在 View 中的栏的布局

javascript - jQuery masonry 布局完成事件不起作用

javascript - 在 `npm install`之后出现关于python语法错误的错误?