Pregunta

No se puede escuchar el evento de desplazamiento en Internet Explorer 7.

He intentado:

$("#myIframe").scroll(function() { alert('hi'); })

Producción de FF:

$($("#myIframe").contents().get(0)).scroll(function() { alert('hi'); })

pulsaciones de teclas conseguir trabajo:

$($("#myIframe").contents().get(0)).keydown(function() { alert('hi'); })

No hay solución correcta

Otros consejos

Por mucho que me encanta jQuery. No puedo conseguir que esto funcione. Sin embargo, he intentado esto en el viejo y simple javascript y ha funcionado bien en IE, FF, Safari y Chrome.

<script type="text/javascript">
    window.onload = function() {
      var frm = document.getElementById("myIframe").contentWindow;
      frm.onscroll = function(){
        alert("EUREKA");
      }
    }
</script>

EDIT: Los siguientes obras en FF, Safari y Chrome cuando se utiliza window.load (). Al utilizar document.ready sólo funciona en FF. Por alguna razón no funciona en IE8 en cualquiera de los casos.

$(window).load(function(){
    $($('#myIframe').contents()).scroll(function(){
       alert('frame scrolled in jquery');
    }); 
}); 

Sé que es un viejo hilo, pero algunas personas podría encontrar útil.

$(document).scroll() puede ser reemplazado por $(window).scroll(), y ha funcionado para mí hasta ahora.

Prueba esto:

2 cosas deben suceder antes de que pueda recorrer el DOM de un contexto de navegación anidada.

Es necesario saber que el iframe existe, cuidado con el evento ready documento.

Y lo que necesita para asegurarse de que el iframe ha cargado.

es decir:

    $(document).ready(function(){

        // #page is the id of the iframe
        $('#page').load(function(){
            // $(this)[0].contentWindow is the window of your nested browsing context/ iframe
            $($(this)[0].contentWindow).scroll(function(){
                console.log($(this).scrollTop());
            });
        });
     });

Una cosa a tener en cuenta es que este definitivamente no va a funcionar en navegadores Firefox.

poner esto en el padre:

var childScrollHandler = function () {
   alert('Scrolling going on');
}

Y a continuación, poner esto en el contenido anidado:

$(document).bind('scroll', function(ev){
    parent.childScrollHandler(ev);
});

reemplazar $(document) por cualquier elemento que está intentando escuchar a.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top