Trên Surface Pro 3 chỉ với Firefox:
Khi thực hiện cử chỉ vuốt bằng một ngón tay trên một phần tử, trình duyệt sẽ lửa wheel
sự kiện thay vì touchmove
hoặc mousemove
sự kiện. Làm thế nào để bạn ngừng hành vi bánh xe, và cho phép một ngón tay duy nhất để luôn luôn được coi là chuyển động chạm/chuột thay vào đó?Surface Pro 3 với Firefox - Có các sự kiện chạm/chuột kích hoạt chạm duy nhất thay vì các sự kiện bánh xe
Vì vậy, tôi muốn xử lý một lần vuốt ngón tay dưới dạng một loạt các mousemove
hoặc touchmove
thay vì là wheel
sự kiện. Tôi không muốn vuốt một ngón tay để cuộn trang nếu vuốt qua phần tử này. Điều này rất dễ làm trong Chrome và IE11. Điều này có vẻ không khả thi ngay bây giờ trong Firefox. Hiện tại tôi nghĩ rằng đây là một lỗi, nhưng có thể có một cái gì đó tôi đang mất tích.
Dưới đây là một ví dụ đơn giản:
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.
Bởi vì tôi đang ngăn chặn mặc định trong wheel
, di chuyển trang được dừng lại khi một ngón tay trượt lên hoặc xuống
Cửa sổ di chuyển bị dừng trong firefox nếu bạn vuốt trong hộp màu đỏ, nhưng không có sự kiện di chuột hoặc sự kiện chạm nào sẽ kích hoạt. (nhưng mousemove sẽ kích hoạt nếu bạn vuốt theo chiều ngang thay vì theo chiều dọc)
Tôi không có quyền truy cập vào phần cứng, vì vậy tôi không thể tự mình kiểm tra, nhưng bạn có nghe 'touchstart' không? [Trang MDN] (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events) dường như ngụ ý rằng nếu bạn ngăn chặn mặc định trên đó, bạn * không * nhận các sự kiện chuột - và có thể là sự kiện di chuyển chuột đang chặn 'touchmove'. – Jeremy