为了账号安全,请及时绑定邮箱和手机立即绑定

如何让移动端的touch事件触发时,变成执行PC端mouse事件?

如何让移动端的touch事件触发时,变成执行PC端mouse事件?

慕婉清6462132 2019-02-06 17:57:39
用JavaScript写了很多mousedown、mousemove、mouseup的事件方法,在PC端上可以通过鼠标来实现(例如:缩放、拖动),但是在移动端用手指操作没反应,有什么方法可以使在移动端触发touchstart时变成执行PC端的mousedown, 触发touchmove时变成执行PC端的mousemove, 触发touchend时变成执行PC端的mouseup?或者有这方面的框架吗?
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

// 1、定义这两个函数

function touchEventToMouseEvent(event, eventType) {

        if (!event.originalEvent || !event.originalEvent.targetTouches || event.originalEvent.targetTouches.length != 1)

            return false;

        var te = event.originalEvent.targetTouches[0];

        var clientX = te.clientX, clientY = te.clientY, screenX = te.screenX, screenY = te.screenY;


        var simEvent = new MouseEvent(eventType, {

            clientX: clientX,

            clientY: clientY,

            screenX: screenX,

            screenY: screenY,

            button: 0,

            buttons: 0

        });

        return simEvent;

    }

    

function findElm(targetElement) {

        targetElement.on('touchstart', function (e) {

            console.log('touchstart');

            console.log(e);

            var simEvent = touchEventToMouseEvent(e, 'mousedown');

            if (simEvent != null) {

                $(this)[0].dispatchEvent(simEvent);

            }

        });


        targetElement.on('touchmove', function (e) {

            e.preventDefault();

            console.log('touchmove');

            var simEvent = touchEventToMouseEvent(e, 'mousemove');

            if (simEvent != null) {

                $(this)[0].dispatchEvent(simEvent);

            }

        });


        targetElement.on('touchend', function (e) {

            console.log('touchend');

            console.log(e);

            var simEvent = touchEventToMouseEvent(e, 'mouseup');

            if (simEvent != null) {

                $(this)[0].dispatchEvent(simEvent);

            }

        });

}

   

// 2、执行 findElm(selectorElement) 即可将移动端的touch

findElm(selectorElement); 

    


查看完整回答
反对 回复 2019-02-16
  • 1 回答
  • 0 关注
  • 2070 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信