编程语言
首页 > 编程语言> > javascript – touchmove事件没有在谷歌Chrome上为Android启动

javascript – touchmove事件没有在谷歌Chrome上为Android启动

作者:互联网

这是一个反应“客户签名”组件. Android Chrome浏览器上没有触发touchmove事件.我在三星Galax平板电脑上(2016年).我将平板电脑通过USB连接到我的电脑控制台.

在我的componentDidMount中,我获得了画布引用,2d上下文等,并为canvas元素设置了事件监听器:

componentDidMount(){
   let canvas = this.refs.canvas;
   let ctx = canvas.getContext("2d");
   // ...
   canvas.addEventListener('touchmove ', (e) => { console.log("touchMove: ", e); });
}

在我的渲染中我有画布:
渲染(){
    
    
    
    }

事件永远不会发生.我在touchstart上设置了e.preventDefault;触摸画布区域内时页面不滚动.触摸画布内部并移动手指不会做任何事情.

我有其他事件可以工作,所以我不认为它与画布参考有任何关系.

document.addEventListener('keydown', this.keyPress);
canvas.addEventListener('mousemove', this.mouseMove); // works
canvas.addEventListener('touchmove ', (e) => { console.log("touchMove E: ", e); }); // does not work
canvas.addEventListener("mousedown", this.mouseDown); // works
canvas.addEventListener("mouseup", this.mouseUp); // works
canvas.addEventListener("touchstart", this.touchStart); // works
canvas.addEventListener("touchend", this.touchEnd); // works

系统细节

Chrome 66.0.3359.158
Android 5.1.1;SM-T280 Build/LMY47V

如果您需要其他信息,请告诉我.

我有一个mouseMove运行良好,所以这个签名模块在PC上完美运行.现在我只是想在移动/触摸屏上进行这项工作.

PS我已阅读并阅读和阅读有关Android等触摸移动问题,但这些问题似乎都没有解决我遇到的同样问题.

谢谢你的帮助

解决方法:

我遇到过同样的问题.最终工作的是当手指触摸画布时禁用任何滚动.

document.body.addEventListener("touchstart", function(e){ if (e.target.nodeName == 'CANVAS') { e.preventDefault(); } }, false);
document.body.addEventListener("touchend", function(e){ if (e.target.nodeName == 'CANVAS') { e.preventDefault(); } }, false);
document.body.addEventListener("touchmove", function(e){ if (e.target.nodeName == 'CANVAS') { e.preventDefault(); } }, false);

标签:touchmove,javascript,events,reactjs,canvas
来源: https://codeday.me/bug/20190910/1799725.html