2012-05-25 16 views
18

Gibt es eine Möglichkeit, wie von Iframe auf Parrent-Seite zugreifen (und Parrent-Seite ändern)?Zugriff auf und ändern Elternseite von iframe (mit jquery)

<body> 
    <iframe src="frame1.html" name="frame1" height="100%"></iframe> 
    <div id="test1"></div> 
</body> 

In frame1.html ist <a href=..> und ich möchte Text "<h1>clicked</h1>" in <div id="test1"></div> hinzuzufügen, wenn der <a href..> geklickt wurde.

Danke.

+0

Aus vielen Sicherheitsgründen ist dies nicht möglich. –

+1

@ChristianVarga nicht ganz wahr: Es ist erlaubt über Elemente in der gleichen Domäne. – Christoph

+1

Awesome, ich stehe korrigiert. –

Antwort

20

Wenn Ihr Kind Seite (frame1.html) in der gleichen Domäne wie die übergeordneten Seite befindet, können Sie einen Code schreiben, wie in den unten stehenden Kind Fenstern:

$('#test1', parent.document).html('<h1>clicked</h1>'); 

Der zweite Parameter stellt die context in welches das durch den ersten Parameter übereinstimmende Element suchen soll. Das Dokument ist hier: http://api.jquery.com/jQuery/#jQuery-selector-context

jQuery(selector [, context ]) 

Also, Ihr Code (frame1.html) so gehen könnte:

<a href="..." 
    onclick="$('#test1', parent.document).html('<h1>clicked</h1>');">click me</a> 

Hoffnung, das hilft.

7

Wichtiger Hinweis: Zugriff in die und aus iframes ist nur möglich, wenn beide Eltern und iframe aus der gleichen Domäne sind, sonst Sie keinen Zugriff haben aufgrund Same Origin Policy.

Beachten Sie, dass beide Teile ein eigenes Dokument haben. Zugriff auf das übergeordnete Objekt aus iframe ist einfach mit

parent.document 

und von den Eltern es eine der folgenden ist: (! Für die Unterstützung achten)

window.frames['iframeName'] 

(window.frames.length /*gives you the number of iframes in your document*/) 

oder verweisen Sie mit der ID und gehen Sie wie folgt

var iframe = document.getElementById('iframe'); 
var doc = iframe.contentDocument? iframe.contentDocument:iframe.contentWindow.document; 
2

Der folgende Code sollte funktionieren:

$(parent.document).find("#selector"); 

Der Selektor stammt aus dem übergeordneten Dokument, um eine Aktion auszuführen. Zum Beispiel:

$(parent.document).find("#selector").remove(); 
Verwandte Themen