在表面臨3只的Firefox:
當在元件製作用單個手指滑動手勢,瀏覽器將火wheel
事件而不是touchmove
或mousemove
事件。你如何停止車輪的行爲,並允許一個手指始終被視爲觸摸/鼠標移動?表面臨3與Firefox - 有單次觸摸的觸發的觸摸/鼠標事件,而不是輪事件
所以我想要將一個手指輕掃作爲一系列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
,滾動頁面時,停止一個手指向上或向下滑動
窗口滾動在firefox中停止,如果你在紅框中滑動,但沒有mousemove或touchmove事件會觸發。 (但是,如果水平滑動而不是垂直滑動,則mousemove會觸發)
我無法訪問硬件,因此我無法自己測試,但是您是否正在傾聽'touchstart'? [MDN頁面](https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events)似乎意味着如果你防止默認,你*不會*獲得鼠標事件 - 可能是鼠標滾動事件正在壓制'touchmove'。 – Jeremy