He trabajado con <body>
y<div class="wrapper">
Cuando se abre una ventana emergente ...
<body>
obtiene una altura del 100% y un desbordamiento: oculto
<div class="wrapper">
obtiene posición: relativa; desbordamiento: oculto; altura: 100%;
Uso JS / jQuery para obtener la posición de desplazamiento real de la página y almacenar el valor como atributo de datos al cuerpo
Luego me desplazo a la posición de desplazamiento en el DIV .wrapper (no en la ventana)
Aquí está mi solución:
JS / jQuery:
// when popup opens
$('body').attr( 'data-pos', $(window).scrollTop()); // get actual scrollpos
$('body').addClass('locked'); // add class to body
$('.wrapper').scrollTop( $('body').attr( 'data-pos' ) ); // let wrapper scroll to scrollpos
// when popup close
$("body").removeClass('locked');
$( window ).scrollTop( $('body').attr( 'data-pos' ));
CSS:
body.locked {position:relative;overflow:hidden;height:100%;}
body.locked .wrapper {position:relative;overflow:hidden;height:100%;}
Funciona bien en ambos lados ... escritorio y móvil (iOS).
Sugerencias y mejoras son bienvenidas :)
¡Salud!