У меня есть блок кода, который прокручивает страницу вверх с помощью animate
jQuery, но для повышения удобства использования, если пользователь каким-либо образом нарушает движение прокрутки (например, колесо прокрутки, захват полосы прокрутки и т. Д.), Затем это немедленно остановит движение.
Я задал вопрос об этом неделю назад здесь , но после того, как некоторые тестировщики любезно опробовали код, он сообщил, что он не работает в браузерах на основе Gecko.
Это код, который у меня есть:
$(document).ready(function() {
// scroll to top: check if user / animate is scrolling
var scrollAnimating = false;
jQuery.fx.step.scrollTop = function(E) {
scrollAnimating = true;
E.elem.scrollTop = E.now;
scrollAnimating = false;
};
// go to top (on click)
$('#gototop').click(function() {
$(this).fadeOut(100,function() {
$(this).css({backgroundColor: '#CCC'}).html('Going... (scroll to stop)').fadeIn(100, function() {
$('html,body').animate({scrollTop:0},3000);
})
});
$(window).scroll(function() {
if (!scrollAnimating) {
$('html,body').stop();
$('#gototop').html('Go to top');
};
});
resetNames();
return false;
});
function resetNames() {
setTimeout(function() {
$('#gototop').html('Go to top').css({backgroundColor: '#DDD'});
},3000);
}
});
В основном при нажатии #gototop
он начинает анимировать прокрутку к вершине. Если прокрутка нарушена, движение прокрутки прекращается, и текст для #gototop
сбрасывается.
Есть несколько проблем с этим кодом: некоторые части смехотворно неэффективны, и он не работает в браузерах на основе Gecko (крупная компания).
Как мне заставить его работать? Любые указатели о том, как сделать его эффективным?