我把endhander写在里面和写在外面有什么好坏处?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
.box {
width: 200px;
height: 200px;
background-color: red;
}
</style>
<body>
<div class="box" id="box"></div>
<script>
// 1, 扫到手势
const boxDOM = document.getElementById('box');
function swipe(DOM, cb) {
const start = {};
const threshold = {
time: 500,
distance: 100
}
DOM.addEventListener('touchstart', function (evt) {
evt.preventDefault();
}, false)
DOM.addEventListener('pointerdown', startHandler, false);
function startHandler(evt) {
start.x = evt.pageX;
start.y = evt.pageY;
start.time = new Date().getTime();
DOM.addEventListener('pointerup', endHandler, false);
DOM.addEventListener('pointercancel', endHandler, false);
function endHandler(evt) {
const delta = {};
let direction = '';
delta.time = new Date().getTime() - start.time;
delta.x = evt.pageX - start.x;
delta.y = evt.pageY - start.y;
if (delta.time > threshold.time
|| (Math.abs(delta.x) < threshold.distance)
&& (Math.abs(delta.y) < threshold.distance)) {
return;
} else {
if (Math.abs(delta.x) > Math.abs(delta.y)) {
if (delta.x > 0) {
direction = 'right'
} else {
direction = 'left'
}
} else {
if (delta.y > 0) {
direction = 'down'
} else {
direction = 'up'
}
}
cb.call(DOM, direction)
}
DOM.removeEventListener('pointerup', endHandler,false);
DOM.removeEventListener('pointercancel', endHandler,false);
}
}
}
swipe(boxDOM, function (direction) {
console.log(this);
console.log(direction);
})
</script>
</body>
</html>6
收起
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星