Як я можу визначити в javascript, якщо користувач прокручує?
scrollingв onscroll. (ps: ні, це не те саме)
Як я можу визначити в javascript, якщо користувач прокручує?
scrollingв onscroll. (ps: ні, це не те саме)
Відповіді:
це працює:
window.onscroll = function (e) {
// called when the window is scrolled.
}
редагувати:
ви сказали, що це функція в TimeInterval ..
Спробуйте зробити це так:
userHasScrolled = false;
window.onscroll = function (e)
{
userHasScrolled = true;
}
тоді всередину вашого інтервалу вставте це:
if(userHasScrolled)
{
//do your code here
userHasScrolled = false;
}
Ви щойно сказали javascript у своїх тегах, тож повідомлення @Wampie Driessen може вам допомогти.
Я також хочу внести свій внесок, тому ви можете використовувати наступне при використанні jQuery, якщо вам це потрібно.
//Firefox
$('#elem').bind('DOMMouseScroll', function(e){
if(e.detail > 0) {
//scroll down
console.log('Down');
}else {
//scroll up
console.log('Up');
}
//prevent page fom scrolling
return false;
});
//IE, Opera, Safari
$('#elem').bind('mousewheel', function(e){
if(e.wheelDelta< 0) {
//scroll down
console.log('Down');
}else {
//scroll up
console.log('Up');
}
//prevent page fom scrolling
return false;
});
Інший приклад:
$(function(){
var _top = $(window).scrollTop();
var _direction;
$(window).scroll(function(){
var _cur_top = $(window).scrollTop();
if(_top < _cur_top)
{
_direction = 'down';
}
else
{
_direction = 'up';
}
_top = _cur_top;
console.log(_direction);
});
});
$('#elem').bind('scroll'недостатньо добре? EDIT: Неважливо, я бачив ваш другий приклад.
e.originalEvent.wheelDelta || e.originalEvent.detail?
wheelподію.
window.addEventListener("scroll",function(){
window.lastScrollTime = new Date().getTime()
});
function is_scrolling() {
return window.lastScrollTime && new Date().getTime() < window.lastScrollTime + 500
}
Змініть 500 на кількість мілісекунд після останньої події прокрутки, при якій ви вважаєте, що користувач "більше не прокручує".
( addEventListenerкраще, ніж onScrollтому, що перший може прекрасно співіснувати з будь-яким іншим кодом, який використовує onScroll.)
Ви можете встановити інтервал, щоб продовжувати перевіряти, чи прокрутив користувач, а потім зробити щось відповідно.
Позичення у великого Джона Резіга у його статті .
Приклад:
let didScroll = false;
window.onscroll = () => didScroll = true;
setInterval(() => {
if ( didScroll ) {
didScroll = false;
console.log('Someone scrolled me!')
}
}, 250);
if(scolling). Цеif(window.onscroll)те саме?