2013-05-29 9 views
12

Utworzyłem dwie strony internetowe, z których jedna zawiera drugą w elemencie iframe. Chciałbym przewinąć osadzoną stronę ze strony nadrzędnej za pomocą javascript.przewijanie elementu iframe ze strony nadrzędnej

Co próbowałem dotąd:

  1. $('#go').scrollTop(200);

  2. $('.footer').scrollTop(200);

  3. var frame = document.getElementById('go');
    frame.contentWindow.scrollTo(0, 200);

żaden z nich nie pracował

html rodzic www:

<html> 
<body> 
. 
. 
. 
<div class="footer"> 
     <iframe id="go" src="go.html"></iframe> 
    </div> 
    </body> 
</html> 

Obie te strony internetowe są lokalne pliki na komputerze i używam Google Chrome z flagą "--allow-file-access-from-Files".

Jak przewinąć element iframe do określonej pozycji?

+0

Czy znasz treść "go.html"? czy możesz skupić się na wymaganym elemencie w nim? –

+0

@YuriyGalanter Znam treść pliku go.html, ale zawiera on inny element iframe w innej domenie, więc nie mogę uzyskać do niego dostępu. Zrobiłem iframe w iframe, aby ominąć zasady tego samego pochodzenia. – stackErr

Odpowiedz

7

to działa:

document.getElementById("go").contentWindow.setTimeout("this.scrollTo(0, 200);",1); 

Aktualizacja. Doh. Działa tylko w IE, ale myślę, że coś tam jest.

Aktualizacja 2 To działa uniwersalnie:

document.getElementById("go").onload = function() { this.contentWindow.scrollTo(0, 200) }; 

Trzeba czekać na zawartość iframe, aby zakończyć ładowanie dla scrollTo do pracy.

+0

Taa nie działa w Chrome! Próbowałem też kilku wariacji z SetTimeout już bez powodzenia :(. – stackErr

+0

Zaktualizowane rozwiązanie, proszę spróbować. –

3

Możesz użyć window.postMessage, aby wysłać wiadomość z ramki nadrzędnej do elementu iframe, nakazując jej przewinięcie. Spowoduje to utworzenie skryptu postMessage w ramce nadrzędnej i skryptu receiveMessage w elemencie iframe. To kod receiveMessage, który faktycznie przewinął element iframe.

Użyłem tej PolyFill powodzeniem: http://benalman.com/projects/jquery-postmessage-plugin/

+0

To brzmi obiecująco, zaktualizuje się po wypróbowaniu go. – stackErr

+0

Rozwiązanie dostarczone przez Jurija jest o wiele łatwiejsze niż to. Dzięki za wtyczkę, przyda się w dół drogi! – stackErr

Powiązane problemy