der-ingo
Goto Top

JS - Scrollfunktion auf iFrame umbiegen

Hallo zusammen,
ich möchte gerne beim herunterscrollen eine CSS Klasse tauschen. Das funktioniert soweit auch.
Was muss ich denn nun machen damit das Ganze aus einem iFrame heraus funktioniert ? Dem
iFrame habe ich die id "Fenster" gegeben, wie muss ich die nun im Javascriptcode einbinden ?
Kann man überhaupt den Scroll eines iFrames überwachen bzw abgreifen ?
Grüße Ingo

Hier der bisherige Code JS.Code
<script type="text/javascript">  


    $(window).load(function(){
      
$(document).ready(function () {

    $(window).scroll(function () {
        if ($(this).scrollTop() > 10) {


                                   $('#ident1').removeClass('Element1');  
                                   $('#ident1').addClass('Element2');  

        } else {

 
                                   $('#ident1').removeClass('Element2');  
                                   $('#ident1').addClass('Element1');  
 
        }
    });
    });
    });


</script>

Content-Key: 379289

Url: https://administrator.de/contentid/379289

Printed on: April 23, 2024 at 07:04 o'clock

Mitglied: 136588
136588 Jul 05, 2018 updated at 20:28:23 (UTC)
Goto Top
Du musst das Scrollevent vom contentDocument des iFrames subscriben, ein iframe selbst hat kein scroll event.
document.getElementById('fenster').contentDocument.addEventListener('scroll', function(){  
    alert('iframe is scrolling')  
}, false);
Und natürlich die same origin policy bei iFrames beachten. Die Seite des iFrames muss also entweder auf der selben Domain liegen oder sie muss Cross Site Scripting explizit per CORS-Header erlauben damit das funktionieren kann.
Member: Der-Ingo
Der-Ingo Jul 05, 2018 at 21:04:53 (UTC)
Goto Top
Die "same origin policy" ist kein Problem, da ich nur eine Unterseite anzeigen möchte keine fremde Seite.
Aber muss jetzt der gesamte Javascript Code ins iFrame ?
Auf der "Hauptseite" wird dann kein Javascript eingebunden ?
Mitglied: 136588
136588 Jul 05, 2018 updated at 21:57:06 (UTC)
Goto Top
Zitat von @Der-Ingo:
> Aber muss jetzt der gesamte Javascript Code ins iFrame ?
Nein, das bleibt in der Hauptseite!
Auf der "Hauptseite" wird dann kein Javascript eingebunden ?
Doch, das kommt dort hin.
Member: Der-Ingo
Der-Ingo Jul 06, 2018 at 07:23:09 (UTC)
Goto Top
Ok danke dir face-wink
So richtig hab ich es zwar immer noch nicht verstanden, wie das gehen soll.
Aber es läuft jetzt !! Allerdings aus dem iFrame heraus.

Hier mein neuer Code

<script type="text/javascript">  


    $(window).load(function(){
      
$(document).ready(function () {

    $(window).scroll(function () {
        if ($(this).scrollTop() > 10) {

                                   $('#ident1', window.parent.document).removeClass('Element1');  
                                   $('#ident1', window.parent.document).addClass('Element2');  

        } else {

 
                                   $('#ident1', window.parent.document).removeClass('Element2');  
                                   $('#ident1', window.parent.document).addClass('Element1');  

        }
    });
    });
    });


</script>
Mitglied: 136588
136588 Jul 06, 2018 updated at 07:25:42 (UTC)
Goto Top
Ach so, das hatte ich missverstanden, ich dachte du wolltest es umgekehrt, naja aber der Anstubser hat dann wohl gereicht face-wink.
Member: Der-Ingo
Der-Ingo Jul 06, 2018 at 07:30:00 (UTC)
Goto Top
Ja aber trotzdem klasse, dass du dir die Mühe gemacht hast
einen Lösungsansatz anzubieten und zu helfen.
Vielen Dank