Tengo este caso en el que no quiero controlar si se debe desplazar la ventana del navegador, o si se debe desplazar un contenido div desplazable con la rueda del mouse (en el mismo evento de desplazamiento).
Como esto:
$('#scrollablediv')[0].addEventListener('wheel', function(e) { /* try to scroll the browser window instead of the div */ if (someCondition) { e.preventDefault(); /* this doesn't work */ var event = jQuery.Event('wheel', {deltaY: e.deltaY} ); $('html, body').trigger(event); } },{ passive: false }); /* passive: false so i can use e.preventDefault() */Desafortunadamente, esto no parece funcionar.
Además, no quiero usar Window.scrollBy() o Window.scrollTo() porque el desplazamiento parece mecánico. Debe ser un desplazamiento suave, como el evento de la rueda original.
Nota:
También probé una solución en la que cambio overflow-y: hidden a overflow-y: scroll usando una clase, pero esto requiere que el visitante deje de desplazarse e inicie un nuevo evento de desplazamiento para que funcione. La solución debe funcionar usando el mismo evento de desplazamiento.