2015-04-14 17 views
5

Tôi cần tổ chức điều hướng như jquery.fullPage: khi tôi cuộn một lần - tôi chuyển sang phần tiếp theo.Cách tắt hiệu ứng nhiều cuộn trong osx và sự kiện cuộn cuộn một lần trên mỗi cuộn

Tôi đã cố gắng sử dụng jquery.mousewheel cho nó, nhưng nó không thành công trong MacOS với touchpad hoặc trackpad hoặc APPLE Magic Mouse: Nó cuộn nhiều trang trình bày trên một cuộn.

Tôi cố gắng để sử dụng giải pháp này: https://github.com/jquery/jquery-mousewheel/issues/36#issuecomment-67648897

Nó hoạt động tốt trong Chrome, nhưng nó không trong FF và có lỗi trong Safari.

Đây là cuộc biểu tình đơn giản của vấn đề: http://jsfiddle.net/ss5LueLx/13/

$slider.on('mousewheel', function(event) { 
    if (event.deltaY>0) { 
     slider.prevSlide(); 
    } else { 
     slider.nextSlide(); 
    } 
}); 

Trả lời

0

Tôi đã thử nghiệm tuyên bố này trong trình duyệt SeaMonkey của tôi và nó không thành công.

var delta = e.type == 'mousewheel' ? e.originalEvent.wheelDelta * -1 : 40 * e.originalEvent.detail; 

Chỉ trong trường hợp, tôi đã xem deltaY và nó hoạt động: +1 theo một hướng và -1 trong khác, giống như bạn đã xác định trong hai triển khai khác mà bạn có.

console.log(e.deltaY); // view console in FireBug 

Nhìn vào cấu trúc sự kiện trong Firebug, tôi có thể thấy loại sự kiện là "mousewheel", nhưng tôi không thấy trường wheelData trong originalEvent.

Và mặc dù có trường chi tiết nhưng trường đó vẫn ở mức 0.

Tôi sẽ tưởng tượng rằng bạn đang cố gắng chuyển đến mục tiếp theo chỉ khi bạn đạt đến +/- 3. Tôi sẽ đề nghị một cái gì đó của các loại để thực hiện điều này feat:

// somewhere, initialize to zero 
var current_position = 0; 


// on mousewheel events 
current_position += e.deltaY; 

// you had a x 40 which would indicate that the limit is about 120/40 
// if 3 is too small, you can always increase it to 5 or event 10... 
if(current_position <= -3) 
{ 
    slider.nextSlide(); 
    current_position = 0; 
} 
else if(current_position >= 3) 
{ 
    slider.prevSlide(); 
    current_position = 0; 
} 

Nếu không, bạn có thể xác minh rằng cờ allowScroll của bạn hoạt động như mong đợi. Tôi không lập trình các đối tượng theo cách đó nên tôi không chắc liệu nó có đúng hay không. (Tôi sử dụng cú pháp prototype hữu ích nếu bạn muốn mở rộng các lớp.)

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