带有 Firefox 的 Surface Pro 3 - 具有单点触摸触发 touch/mouse 事件而不是滚轮事件
Surface Pro 3 with Firefox - Have single touch trigger touch/mouse events instead of wheel events
仅在带有 Firefox 的 Surface Pro 3 上:
当用单指在元素上做出滑动手势时,浏览器将触发 wheel
事件而不是 touchmove
或 mousemove
事件。如何停止滚轮行为,并允许始终将单个手指视为 touch/mouse 移动?
所以我想将单个手指滑动视为一系列 mousemove
或 touchmove
而不是 wheel
事件。如果在此元素上滑动,我根本不希望单指滑动来滚动页面。这在 Chrome 和 IE11 中很容易做到。这在 Firefox 中似乎是不可能的。目前我认为这是一个错误,但我可能遗漏了一些东西。
这是一个简单的例子:
http://codepen.io/simonsarris/pen/PwbdRZ
var can = document.getElementById('can');
can.addEventListener('mousemove', function(e) {
// Will never happen on the Surface Pro 3 in Firefox
// Will happen in IE11 though
console.log('mouseMove')
});
can.addEventListener('touchmove', function(e) {
// Will never happen on the Surface Pro 3 in Firefox
// Will happen in Chrome though
console.log('touchMove')
});
// Stops the window from scrolling in firefox when you swipe on the element
// But stopping this does not allow the single touch gesture to register as mousemove or touchmove events
can.addEventListener('wheel', function(e) {
console.log('wheel')
e.preventDefault();
});
// consider also the 'DOMMouseScroll' event, though preventing this event will not stop firefox from panning the page.
因为我要防止 wheel
中的默认设置,所以当单指向上或向下滑动时,滚动页面会停止
如果您在红色框中滑动,window Firefox 中的滚动将停止,但不会触发 mousemove 或 touchmove 事件。 (但是,如果您水平滑动而不是垂直滑动,mousemove 将会触发)
触摸事件目前在桌面版 Firefox (36.0.4) 中被禁用,尽管它们会在 运行 Firefox 处于 Metro 模式时或通过 dom.w3c_touch_events.enabled
设置明确启用它们时起作用。有关详细信息,请参阅 the MDN article on Touch events。
仅在带有 Firefox 的 Surface Pro 3 上:
当用单指在元素上做出滑动手势时,浏览器将触发 wheel
事件而不是 touchmove
或 mousemove
事件。如何停止滚轮行为,并允许始终将单个手指视为 touch/mouse 移动?
所以我想将单个手指滑动视为一系列 mousemove
或 touchmove
而不是 wheel
事件。如果在此元素上滑动,我根本不希望单指滑动来滚动页面。这在 Chrome 和 IE11 中很容易做到。这在 Firefox 中似乎是不可能的。目前我认为这是一个错误,但我可能遗漏了一些东西。
这是一个简单的例子:
http://codepen.io/simonsarris/pen/PwbdRZ
var can = document.getElementById('can');
can.addEventListener('mousemove', function(e) {
// Will never happen on the Surface Pro 3 in Firefox
// Will happen in IE11 though
console.log('mouseMove')
});
can.addEventListener('touchmove', function(e) {
// Will never happen on the Surface Pro 3 in Firefox
// Will happen in Chrome though
console.log('touchMove')
});
// Stops the window from scrolling in firefox when you swipe on the element
// But stopping this does not allow the single touch gesture to register as mousemove or touchmove events
can.addEventListener('wheel', function(e) {
console.log('wheel')
e.preventDefault();
});
// consider also the 'DOMMouseScroll' event, though preventing this event will not stop firefox from panning the page.
因为我要防止 wheel
中的默认设置,所以当单指向上或向下滑动时,滚动页面会停止
如果您在红色框中滑动,window Firefox 中的滚动将停止,但不会触发 mousemove 或 touchmove 事件。 (但是,如果您水平滑动而不是垂直滑动,mousemove 将会触发)
触摸事件目前在桌面版 Firefox (36.0.4) 中被禁用,尽管它们会在 运行 Firefox 处于 Metro 模式时或通过 dom.w3c_touch_events.enabled
设置明确启用它们时起作用。有关详细信息,请参阅 the MDN article on Touch events。