[英]How to detect long touch in javascript in mobile devices without jQuery
我在StackOverflow上找到了一些解决方案,但是大多数解决方案都使用jQuery。 有没有办法用纯JavaScript或ReactJS做到这一点。
这是鼠标事件的基本演示: http : //codepen.io/zvona/pen/avYgJg?editors=011 。 您还需要使用onTouchStart
和onTouchEnd
。 延迟(当前为300ms)也应根据您的目的进行调整。
var LongTouch = React.createClass({
getInitialState() {
return {
value: 'Touch me'
}
},
startTouch() {
this.touchTimeout = window.setTimeout(function() {
this.setState({
value: 'Long touch triggered'
});
}.bind(this), 300);
},
endTouch() {
window.clearTimeout(this.touchTimeout);
this.setState(this.getInitialState());
},
render() {
return (
<div
className='longTouch'
onMouseDown={this.startTouch}
onMouseUp={this.endTouch}>
{this.state.value}
</div>
)
}
});
我认为您需要自己操纵事件的时间。
您将时间存储在对象的字段中,然后在发生另一个事件时,进行一些数学运算以获得持续时间。
下面的代码可在PC上运行,我相信触摸是相同的,但是鼠标指针是不可见的。
<!DOCTYPE html>
<html>
<body>
<p onmousedown="__myfunc1(event)" onmouseup="__myfunc1(event)" >
Click and hold on this paragraph.
</p>
<p>Duration: <span id="demo"></span></p>
<script>
function __myfunc1(event) {
src = event.srcElement;
if(src.__t1 != null) {
var n = event.timeStamp - src.__t1;
src.__t1 = null;
document.getElementById("demo").innerHTML = n;
}
else
src.__t1 = event.timeStamp;
}
</script>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.