JQuery - deshabilitar scroll en todos los navegadores

   
Vista:

deshabilitar scroll en todos los navegadores

Publicado por Pedro (3 intervenciones) el 25/08/2015 09:04:16
Hola.
Estoy diseñando un slider a pantalla completa y que el usuario al hacer scroll suceda lo siguiente:
1.-Se deshabilita el scroll para tomar el control de la animación.
2.- La animación desplaza la imagen del slider hasta que desaparece por la parte superior y mientras tanto va entrando el contenido de la web.
3.-Una vez que ha terminado la animación se vuelve a habilitar el scroll.


El problema que tengo es que en firefox funciona perfectamente pero en chrome y safari el scroll no se deshabilita y en vez de mostrar el principio del contenido de la web si el scroll inicial se ha hecho muy rápido el contenido de la web llega hasta la mitad de la pantalla o hasta el punto que se detiene el scroll.

Sabeis alguna manera de poder deshabilitar el scroll que funcione en todos los navegadores, yo he utilizado:
$("html, body").css({ "overflow-y": "hidden"});
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

deshabilitar scroll en todos los navegadores

Publicado por Pedro (3 intervenciones) el 27/08/2015 23:32:23
Hola.
Actualizando la información comento que revisando no funciona en crhome y safari versión mac, en versión windows funciona correctamente.
El problema es que cuando inicio la animación desactivo el scroll con overflow: hidden para controlar la animación y al terminar la animación vuelvo a habilitar el scroll.
El problema en chrome y safari versión mac es que si el usuario hace scroll muy fuerte o rápido la animación se pasa e incluso el contenido de la web, por eso lo que deseo, en cuando se detecta scroll este de desactive automáticamente y empezar la animación.
Alguna sugerencia????
Agradezco sus respuestas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

deshabilitar scroll en todos los navegadores

Publicado por Vainas (96 intervenciones) el 28/08/2015 10:00:00
Buenas:


Y no nos puedes dejar algun ejemplo o codigo para hacer pruebas?. Es que asi sin codigo es muy dificil de imaginar que es lo que pasa.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

deshabilitar scroll en todos los navegadores

Publicado por Pedro (3 intervenciones) el 28/08/2015 13:05:06
Hola, si Ok, adjunto un fragmento con el código que uso.
Es un slider a pantalla completa y al detectar que alguien hace scroll el slider se va desplazando hasta que desaparece por la parte superior y mientras tanto por la parte inferior va entrando el contenido de la página.

Código para detectar el scroll:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(window).scroll(function (event) {
	var st = $(this).scrollTop();
	if (variableSlider == 0) {
	$("html, body").css({ "overflow-y": "hidden"});
	ocultarSlider();
	}
});
 
function ocultarSlider() {
$("html, body").scrollTop(0);
imagenSlider.animate({ "margin-top": "-" + altoPantalla + "px" }, tiempoAnimacion, function () {
		$("html, body").clearQueue;
		$("html, body").css({ "overflow-y": "visible" });
		variableSlider == 1;
	});
}

Este es el fragmento de código, la idea es como he mencionado que al detectar scroll este se desabilite para controlar la animación y una vez que esta termina volver a habilitar el slider, como he mencionado funciona bien en todos los navegadores a excepción de chrome y safari en mac que el scroll no se deshabilita.

Agradezco cualquier sugerencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

deshabilitar scroll en todos los navegadores

Publicado por Vainas (96 intervenciones) el 28/08/2015 17:53:30
Buenas:

prueba a poner

variableSlider = 1; ya que con dos iguales es una comparacion. Por otro lado intenta inicializar esta variable al principio a 0 para que funcione bien.

Podrias tambien probar en vez de usar:

1
$("html, body").clearQueue;

usar:

1
$("html, body").stop();

Mas que nada por que he leido que con el primero te cargas todas las ejecuciones pendientes en la cola de ejecucion.

Ya nos diras algo con esto.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar