如何阻止 Hammer.js 不传播滑动事件?
How to stop Hammer.js from not propagating swipe events?
我有一个有效的标记和脚本可以使用 Hammer.js:
跟踪容器上的 水平 滑动
const container = document.getElementsByClassName('swiper')[0];
const manager = new Hammer.Manager(container);
const swipe = new Hammer.Swipe();
manager.add(swipe);
manager.on('swipe', event => {
if (event.offsetDirection === 4) {
container.style.background = 'red';
}
if (event.offsetDirection === 2) {
container.style.background = 'blue';
}
});
.swiper {
height: 100vh;
background: grey;
}
<script src="https://hammerjs.github.io/dist/hammer.min.js"></script>
<h1>Some content</h1>
<div class="swiper"></div>
<h1>More content</h1>
Fiddle
https://jsfiddle.net/vzg7fy9q/1/
这很好用,我已经用它触发了一个滑块。
然而,问题是,所有的滑动事件似乎都被阻止了。用户不能再在移动设备上向上或向下滚动。我已经在 iPhone 上用 iOS 11.
测试了这个
有没有办法告诉 Hammer.js 传播这些事件而不是消耗它们?
我已经通过明确设置应使用 DIRECTION_HORIZONTAL
跟踪的方向来修复它。我还删除了 Hammer.Manager
:
const hammer = new Hammer(container, {});
hammer.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL });
hammer.on('swipe', event => {
if (event.offsetDirection === 4) {
container.style.background = 'red';
}
if (event.offsetDirection === 2) {
container.style.background = 'blue';
}
});
我有一个有效的标记和脚本可以使用 Hammer.js:
跟踪容器上的 水平 滑动const container = document.getElementsByClassName('swiper')[0];
const manager = new Hammer.Manager(container);
const swipe = new Hammer.Swipe();
manager.add(swipe);
manager.on('swipe', event => {
if (event.offsetDirection === 4) {
container.style.background = 'red';
}
if (event.offsetDirection === 2) {
container.style.background = 'blue';
}
});
.swiper {
height: 100vh;
background: grey;
}
<script src="https://hammerjs.github.io/dist/hammer.min.js"></script>
<h1>Some content</h1>
<div class="swiper"></div>
<h1>More content</h1>
Fiddle
https://jsfiddle.net/vzg7fy9q/1/
这很好用,我已经用它触发了一个滑块。
然而,问题是,所有的滑动事件似乎都被阻止了。用户不能再在移动设备上向上或向下滚动。我已经在 iPhone 上用 iOS 11.
测试了这个有没有办法告诉 Hammer.js 传播这些事件而不是消耗它们?
我已经通过明确设置应使用 DIRECTION_HORIZONTAL
跟踪的方向来修复它。我还删除了 Hammer.Manager
:
const hammer = new Hammer(container, {});
hammer.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL });
hammer.on('swipe', event => {
if (event.offsetDirection === 4) {
container.style.background = 'red';
}
if (event.offsetDirection === 2) {
container.style.background = 'blue';
}
});