У меня есть 2 вложенных элемента в моем HTML-файле. Когда прокрутка попадает в верх или низ дочернего элемента Div, элемент Body также начинает прокручиваться. Чтобы остановить это, я написал функцию, которая вызывается из события OnScroll для дочернего элемента HTML, чтобы сделать прокрутку независимой для дочернего элемента и родительского элемента div.
Функция, которую я написал, выглядит следующим образом:
function selectiveScroll(elementObj)
{
$(elementObj).bind('mousewheel DOMMouseScroll wheel', function(e)
{
var scrollTo = 0;
if (e.type == 'mousewheel')
{
scrollTo = (e.originalEvent.wheelDelta)/(-120);
//alert("mousewheel " + e.originalEvent.wheelDelta + " " + scrollTo );
}
else if (e.type == 'wheel')
{
//alert("wheel " + e.originalEvent.wheelDelta + " " + scrollTo);
scrollTo = (e.originalEvent.wheelDelta * -1)/80;
}
else if (e.type == 'DOMMouseScroll')
{
//alert("DOMMouseScroll " + e.originalEvent.detail);
scrollTo = 40 * e.originalEvent.detail;
}
if (scrollTo)
{
//alert("scrollTo " + scrollTo );
$(this).scrollTop($(this).scrollTop() + scrollTo);
e.preventDefault();
}
});
}
Для браузера Google Chrome это исправление работало, но для IE 11 прокрутка мыши ограничена дочерним и родительским, но когда дочерняя прокрутка, после начальной прокрутки достигает конца на 1 метку в направлении вверх / вниз колеса мыши прокручивает весь путь вверх или до самого дна ребенка.
Я понимаю, что:
Для IE: mousewheel является слушателем событий
Для Chrome: Wheel - слушатель событий
Для FireFox: DomMouseScroll является прослушивателем событий
Но я не понимаю первый блок «Если» «scrollTo = (e.originalEvent.wheelDelta) / (- 120);» Часть.
Как контролировать, сколько прокрутки происходит с помощью 1 метки колеса мыши для IE?