Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отловить scroll колесиком (https://javascript.ru/forum/misc/40435-otlovit-scroll-kolesikom.html)

MadChild 05.08.2013 15:49

Отловить scroll колесиком
 
Ребят, подскажите как отловить скролл колесиком, НО!!!
Надо точно знать в какую сторону идет скролл вверх или вниз и взаивисимости от этого выполнить опредленную функцию, а scroll не выполнять
Спасибо))

skrudjmakdak 05.08.2013 16:17

тестил в хроме:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> 
<html>
	<head>
		<script type="text/javascript">
window.onmousewheel = function(e)
	{
	var delta = e.deltaY || e.detail || e.wheelDelta;

	console.log(delta);
	e.preventDefault();
	e.stopPropagation();
	//return false;
	}
		</script>
	</head>
	<body>
	<div style="width: 100px; height: 1000px;">
	</div>
	</body>
</html>

nerv_ 05.08.2013 16:50

http://forum.php.su/topic.php?forum=46&topic=27

MadChild 05.08.2013 20:26

skrudjmakdak, идея клевая, но в FireFox'е так и не завелся (((
nerv_, к сожалению не то что надо(((

danik.js 05.08.2013 20:47

Нужно ловить три события
wheel - новое, описано в HTML5 (поддерживается IE9+, FF последними)
mousewheel - старое, поддерживается почти всеми браузерами, кроме FF
DOMMouseScroll - поддерживается старыми версиями FF

Впринципе, можно ограничиться только двумя последними, но в перспективе лучше использовать wheel.

MadChild 05.08.2013 20:48

Нашел рабочий скрипт

window.onload = function() {
		    if (window.addEventListener) window.addEventListener("DOMMouseScroll", mouse_wheel, false);
		    window.onmousewheel = document.onmousewheel = mouse_wheel;
		}
			
		var mouse_wheel = function(event) {
		    if (false == !!event) event = window.event;
		    var direction = ((event.wheelDelta) ? event.wheelDelta/120 : event.detail/-3) || false;
		}

если direction>0, то крутимся вверх
а если меньше 0, то вниз
Всем спасибо))

рони 05.08.2013 22:13

MadChild,
Как отследить сторону прокрутки колесика мыши (вверх, вниз)?

MadChild 06.08.2013 06:54

рони, это именно то)) спасибо))
Но использовал метод, который сам выше написал))

Правда вот возникала другая проблема:
При резком прокрутывании выдается сразу, допустим, десяток действий "прокурутить вниз", а как-нибудь их органичить можно?!
Ну то есть пока страница крутится без остановки - это как одна прокрутка. не большой стоп - это вторая прокрутка))

danik.js 06.08.2013 08:30

setTimeout в помощь

Или сравнивать event.timeStamp

рони 06.08.2013 13:29

Цитата:

Сообщение от MadChild
При резком прокрутывании выдается сразу, допустим, десяток действий

при скроллинге событие повторяется много раз


Часовой пояс GMT +3, время: 16:22.