2015-01-05 13 views
6

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)

+0

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

Trả lời

0

Sự kiện chạm hiện bị tắt trong phiên bản Firefox của máy tính để bàn (36.0.4), mặc dù chúng sẽ hoạt động trong khi chạy Firefox ở chế độ Metro hoặc bằng cách bật chúng một cách rõ ràng cài đặt dom.w3c_touch_events.enabled. Xem the MDN article on Touch events để biết thêm thông tin.

Các vấn đề liên quan