У меня есть блок кода, который прокручивает страницу вверх с помощью функции jQuery animate
, но для увеличения удобства использования, если пользователь каким-либо образом нарушает движение прокрутки (например, прокручивание колеса, захват полоса прокрутки и т. д.), то она немедленно остановит движение.У меня есть прокрутка, только перемещается на один пиксель
Я задал вопрос об этом неделю назад here, но после того, как некоторые тестеры попробовали код, они сообщили, что он не работает в браузерах на базе 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 (biggie).
Как заставить его работать? Любые указатели на то, как сделать его эффективным?
Мне нужно, чтобы он работал во всех браузерах (за исключением IE: если он там не работает, отлично со мной). Возможно, мне стоит попробовать какой-то скрипт для обнаружения браузера? –
Вы пробовали мой скрипт в своих браузерах? Каков был результат? – SimonDever
Не нужно было, потому что вы полностью пропустили точку всей сложной информации (не намереваясь нанести вред): весь код должен автоматически останавливать прокрутку, когда он обнаруживает, что пользователь пытается противостоять прокрутке (например, остановить это читать). очевидно, что ваш код этого не делает. Сожалею. –