angular-ui/ui-grid

Moving columns on iPad does not work (e.pageX, e.pageY are not defined)

已关闭

#4,400 创建于 2015年9月18日

 (1 条评论) (0 个反应) (0 位负责人)JavaScript (2,496 个派生)batch import
good first issuegrid-move-columnstype: bug

仓库指标

星标
 (5,395 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

When you try to move a column on iPad (try Column Moving demo in Tutorial) it just does not work. The problem is that e.pageX, e.pageY are not defined in 'touch...' events. You have to instead use this code:

var pointerEventToXY = function(e){
        var out = {
          x: 0, 
          y: 0
        };

        if (e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
            var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
            out.x = touch.pageX;
            out.y = touch.pageY;
        } 
        else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type == 'mouseout' || e.type == 'mouseenter' || e.type == 'mouseleave') {
            out.x = e.pageX;
            out.y = e.pageY;
        }

        return out;
    };

And you call it like this:

    var pageXY = pointerEventToXY(e);
    var pageX = pageXY.x;
    var pageY = pageXY.y;

I would recommend looking for all instances of e.pageX and e.pageY (I found 5 in current version) and replace them with the code above.

贡献者指南