2010-01-27 4 views
5

Lassen Sie mich dieses Vorwort mit ... Ich habe diese Frage/Antworten verwiesen und es scheint, Hinweise zu enthalten, aber ich bin fehlt noch das ganze BildWas ist der jQuery/Javascript-Kontext eines Frames innerhalb eines Iframes?

Run JQuery in the context of another frame

Wesentlichen die Struktur der Indexseite dies ist

<html> 
<body> 
    <div class="frames-wrap"> 
     <iframe id="this-iframe" src="location.php"> 

     </iframe> 
    </div> 
</body> 
</html> 

location.php dann ein Frameset enthält (ähem, nicht meine Idee ...), die zwei Rahmen hat, der wie so eingerichtet sind ...

<frameset cols="350,*"> 
    <frame src="search.php" id="frame_search" name="search"/> 
    <frame src="edit.php" id="frame_edit" name="edit" /> 
</frameset> 

Wenn ich Objekte zwischen der Indexseite und diesen Elementen manipulieren möchte, wie würde ich darüber gehen?

Ich denke, der Kontext sollte etwas ähnlich sein wie window.parent.frames[0].document ... Was fehlt mir noch?

+0

auch das verwiesen, aber ich bin zu neu, um mehr als einen Link zu posten http://stackoverflow.com/questions/997986/write-elements-into-a-child-iframe-using-javascript-or- jquery – technicolorenvy

+0

diese Frage könnte Ihnen helfen: http://stackoverflow.com/questions/251420/invoking-javascript-in-iframe-from-parent-page (schamlose Eigenwerbung, wie die Frage ursprünglich von mir gestellt wurde) –

Antwort

2

Vorwort: Sie können nicht auf den iframes-Inhalt zugreifen, wenn er nicht aus derselben Domäne stammt.

Um Elemente in Ihrem iframe wählen Sie eine jQuery Aufruf wie diese die contents() Funktion verwenden

element = $("#this_iframe").contents().find("#frame_search") 

Der Schlüssel ist, verwenden könnte. Siehe Traversing/contents

+1

ahh contents() ist in der Tat toll, ich habe die iframe-Unterstützung, die zur Verfügung gestellt hat, nicht realisiert ... Danke! – technicolorenvy

2

Ich denke, der Link von Technicolorenvy hat die Antwort, aber der Selektor hat einen weniger bekannten zweiten Parameter, wo Sie den Kontext festlegen können.

Etwas wie folgt aus:

var iframeDoc = document.getElementById('myIframe'); 
iframeDoc = (iframeDoc.contentWindow) ? iframeDoc.contentWindow : (iframeDoc.contentDocument.document) ? iframeDoc.contentDocument.document : iframeDoc.contentDocument; 


// From the parent window 
$('p', iframeDoc).html('Hello from parent'); 

http://docs.jquery.com/Core/jQuery#expressioncontext

1

Geben Sie Ihre Rahmen-IDs, die gültig sind JavaScript-Kennungen helfen würde, dann könnte man Konstrukte verwenden wie window.top.this_iframe.frame_edit.document als Kontext.

+0

danke für die Rückmeldung! aber das ist Bombardierung für mich. Die IDs haben jetzt Unterstriche anstelle von ndes. Wenn ich console.log verwende, um zu sehen, was "hinter den Kulissen" passiert, gibt es etwas zurück, wenn ich window.top.this_iframe.document ODER logge window.top.document.getElementById ('this_iframe') aufzeichne, so dass es erscheint Die frame_edit ID wird nicht "gesehen". irgendwelche Ideen? – technicolorenvy

0

Diese waren alle hilfreich. Ich habe weiter bombardiert, als ich versuchte, am Iframe im DOM vorbeizukommen. Dies scheint von der Tatsache zu stammen, dass ich Code in der ready() -Methode hatte, aber das Frameset, das innerhalb des iFrames aufgerufen wurde, war zu der Zeit, die $ (document) .ready() ausgelöst hatte, nicht geladen.

Vielen Dank für die tolle Hilfe und Feedback!

Verwandte Themen