Frage

Das Scroll-Ereignis kann in Internet Explorer 7 nicht abgehört werden.

Ich habe es versucht:

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

Funktioniert für FF:

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

Damit Tastendrücke funktionieren:

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

Keine korrekte Lösung

Andere Tipps

So sehr ich jQuery liebe.Ich bekomme das nicht zum Laufen.Allerdings habe ich es mit einfachem altem Javascript versucht und es hat in IE, FF, Safari und Chrome einwandfrei funktioniert.

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

BEARBEITEN: Das Folgende funktioniert in FF, Safari und Chrome bei Verwendung von window.load().Bei Verwendung von document.ready funktioniert es nur in FF.Aus irgendeinem Grund funktioniert es in beiden Fällen im IE8 nicht.

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

Ich weiß, es ist ein alter Thread, aber manche Leute es nützlich finden.

$(document).scroll() kann durch $(window).scroll() ersetzt werden, und es hat sich für mich bisher gearbeitet haben.

Versuchen Sie folgendes:

2 Dinge müssen passieren, bevor Sie den dom eines verschachtelten Browsing Kontextes durchqueren können.

Sie müssen wissen, dass die iframe vorhanden ist, mit dem Dokument bereit Veranstaltung gesorgt.

Und Sie müssen sicherstellen, dass die iframe geladen ist.

ie:

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

Eine Sache zu beachten ist, dass dies definitiv nicht Cross-Browser in Firefox arbeiten.

Setzen Sie dieses auf dem parent:

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

Und dann auf dem iframe Inhalt setzen:

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

ersetzen $(document) der durch ein beliebiges Element, das Sie versuchen, in zu hören.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top