С сенсорной мышью этот плагин вообще бесится. Попробуй следующее:
$(window).mousewheel(function(e){
e.stopPropagation();
});
//дальше плагин
Это, кажется, немного успокаивает мышь.
Далее, на маке есть инерциальный скроллинг. Чтоб угомонить его, я перепиливал внутренности:
var SCROLLING_NOW = false;
var isSafari = /*определяем сафари, я определял через modernizr*/
function MouseWheelHandler(e) {
var curTime = new Date().getTime();
//autoscrolling and not zooming?
if(options.autoScrolling && !controlPressed){
// cross-browser wheel delta
e = e || window.event;
var value = e.wheelDelta || -e.deltaY || -e.detail;
var delta = Math.max(-1, Math.min(1, value));
if(isSafari){
if (SCROLLING_NOW){
e.preventDefault();
return false;
}
if (Math.abs(value) < 100){
e.preventDefault();
return false;
}
if(Math.abs(value) > 500){
e.preventDefault();
return false;
}
}
//все остальное из этой функции
}
function performMovement(v){
// using CSS3 translate functionality
if (options.css3 && options.autoScrolling && !options.scrollBar) {
/* у меня используется jquery анимация, можно то же самое допилить к css анимациям */
}
// using jQuery animate
else{
var scrollSettings = getScrollSettings(v);
SCROLLING_NOW = true;
$(scrollSettings.element).animate(
scrollSettings.options,
options.scrollingSpeed, options.easing).promise().done(function () { //only one single callback in case of animating `html, body`
afterSectionLoads(v);
setTimeout(function(){
SCROLLING_NOW = false;
},isSafari ? 300 : 1);
});
}
}
После этого скролл в сафари стал может не идеальным, но гораздо более сносным. Все цифры подобраны эмпирическим путем.