Iframe automatisch scrollen?

2 Antworten

Bei einem iframe kann man auch die Funktion scrollTo() benutzen, um die Scrollposition zu ändern. Allerdings ist darf scrollTo() erst nach dem Laden des iframe-Elements ausgeführt werden. Dazu verwendet man onload:

<iframe src="https://beispiel.de/" id="iframe">
</iframe>

<script>
var iframe = document.getElementById("iframe");
iframe.onload = function() {
    // scrolle zu X = 0 und Y = 500
    iframe.contentWindow.scrollTo(0, 500);
};
</script>

Man kann auch das Attribut scrollTop auf den gewünschten Wert setzen:

var iframe = document.getElementById("iframe");
iframe.onload = function() {
    // scrolle zu Y = 1000
    iframe.contentWindow.document.documentElement.scrollTop = 1000;
};

Dies funktioniert allerdings nicht bei allen eingebundenen Webseiten, da man aus Sicherheitsgründen nicht auf ein iframe mit einer anderen Webseite zugreifen kann (siehe Same-Origin Policy).

Siehe dazu: https://stackoverflow.com/questions/1192228/scrolling-an-iframe-with-javascript

Innerhalb des iframes kannst du genauso scrollen, als wenn die Seite nicht eingebettet ist.

Vom Elter (parent) Dokument kannst du die iframe Seite beim Laden mit dem Parameter #kapitel3 auf eine Position id=kapitel3 setzen.

Was genau ist dein Begehr?

~~~~~~~~~~

Lese gerade, dass automatisch (selbst tun) gescrollt werden soll. Das geht durch Javascript zu einer beliebigen Uhrzeit. Oder x Sekunden nach dem Laden.

Bohne47 
Fragesteller
 30.09.2023, 07:40

Die eingebetttete Seite ist halt sehr hoch und das iframe ist nicht so hoch. Ich wollte dann mit setInterval eine Animation machen, die das iframe alle x millisekunden y pixel weiter scrollt. Ach übrigends: ist es möglich dass man das iframe nur durch Javascript scrollen kann, und durch nichts anderes? Mfg,

Bohne47

0
10tel  30.09.2023, 11:25
@Bohne47

Das iframe ist ein HTML-Element und die Elter (parent) kann die Höhe setzen, auch noch nachträglich, wenn die Webseite im iframe geladen ist.

Die Webseite im iframe kann per ajax ihre Höhe an ihren eigenen Server melden. Der erzeugt daraus ein image mit dieser Höhe, das dann - über Domaingrenzen hinweg - vom Elter gelesen und ausgewertet wird. Elter korrigiert die Höhe des iframes und das eingebettete Dokument ist vollständig sichtbar.

Mir ist nicht bekannt, dass man ein iframe anweisen kann, das enthaltene Dokument gegen Scrollen zu sperren. Elter hat kein Recht, in das Kind Element einzugreifen.

0