Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法禁用右水平滚动,但允许左水平滚动?_Javascript - Fatal编程技术网

Javascript 有没有办法禁用右水平滚动,但允许左水平滚动?

Javascript 有没有办法禁用右水平滚动,但允许左水平滚动?,javascript,Javascript,有没有办法禁用右水平滚动,但允许左水平滚动 let touches = [] window.addEventListener('touchmove', event => { event.preventDefault() }, false) window.addEventListener('touchstart', event => { touches[0] = event.touches[0].pageX }, false) window.addEventListener

有没有办法禁用右水平滚动,但允许左水平滚动

let touches = []
window.addEventListener('touchmove', event => {
  event.preventDefault()
}, false)

window.addEventListener('touchstart', event => {
  touches[0] = event.touches[0].pageX
}, false)

window.addEventListener('touchend', event => {
  touches[1] = event.changedTouches[0].pageX
}, false)

似乎您必须避免touchmove事件的默认设置。

touchmove返回touche列表

touchmove事件对象具有触摸列表 第一次接触,并在所有情况下防止默认。 移动时比较新x值和旧x值 如果nx-ox>0,则手动移动。 例如:


你可以比较你在Touch中保存的位置来确定它是左滚动还是右滚动。我只能在touchend上实现这一点。你能举个例子吗?
var old_x = null;

document.addEventListener('touchstart', function(e) {
  old_x = e.targetTouches[0].clientX;
}, false); 

document.addEventListener('touchcancel', function(e) {
  old_x = e.targetTouches[0].clientX;
}, false); 


document.addEventListener('touchmove', function(e) {
  var touch = e.touches[0];
  if (touch.clientX - old_x < 0 ) {
    document.body.scrollLeft +=  old_x - touch.clientX;
  }
  old_x = touch.clientX;
  e.preventDefault();
  return false;   
}, { passive: false });