Pergunta

Não é possível ouvir o evento de rolagem no Internet Explorer 7.

Eu tentei:

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

Obras de FF:

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

keypresses começar o trabalho:

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

Nenhuma solução correta

Outras dicas

Por mais que eu amo jQuery. Eu não posso chegar a este trabalho. No entanto, eu tentei isso na planície javascript antigo e ele funcionou muito bem no IE, FF, Safari e Chrome.

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

EDIT: As seguintes obras em FF, Safari e Chrome ao usar window.load (). Ao usar document.ready ele só funciona no FF. Por alguma razão ele não funciona no IE8 em qualquer evento.

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

Eu sei que é uma discussão antiga, mas algumas pessoas podem achar que é útil.

$(document).scroll() pode ser substituído por $(window).scroll(), e ele tem trabalhado para mim até agora.

Tente isto:

2 coisas devem acontecer antes que você possa atravessar o dom de um contexto de navegação aninhada.

Você precisa saber que existe o iframe, cuidados com o pronto evento documento.

E você precisa ter certeza de que o iframe foi carregado.

ou seja:

    $(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());
            });
        });
     });

Uma coisa a notar é que este definitivamente não irá funcionar cross browser no Firefox.

Coloque este sobre o pai:

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

E, em seguida, colocar isso no conteúdo iframe:

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

substituir $(document) por qualquer elemento que você está tentando ouvir em.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top