Abrufen des übergeordneten iframes eines Dokuments in jQuery

8

Ich habe eine Seite mit einem iframe, in dem sich ein html-Dokument befindet. Ich muss auf die iframe-ID aus diesem untergeordneten Dokument zugreifen und habe kein Glück, mit jQuery daran zu kommen. Die wesentliche Struktur ist dies auf meiner Seite:

%Vor%

In meiner JavaScript-Methode kann ich mit den jQuery-Selektoren in den <body> -Tags alles erreichen, aber das iframe-Element kann nicht abgerufen werden, um die Größe zu ändern. Ich habe ein paar Dinge ausprobiert, bin aber zugegebenermaßen kein Experte in der jQuery-DOM-Navigation, insbesondere wo Iframes beteiligt sind (der Iframe befindet sich in derselben Domäne wie die enthaltene Seite.) Gibt es eine Möglichkeit, dies zu tun?

    
larryq 24.08.2012, 17:43
quelle

5 Antworten

18

Keine Notwendigkeit für jQuery überhaupt. Um das Körperobjekt Ihrer Eltern zu erhalten, können Sie dies tun:

%Vor%

Wenn es sich um die gleiche Domain wie Ihr iframe handelt, auf dem Sie den Code ausführen, können Sie normales JavaScript für dieses Objekt verwenden:

%Vor%

oder mit jQuery:

%Vor%

Hier ist ein Artikel über das Ändern der Größe eines Iframes innerhalb des Iframes mit Beispielcode: Ссылка

Und eine verwandte Frage / Antwort zur Größenanpassung eines Iframes basierend auf seinem eigenen Inhalt: Ändern der Größe eines Iframes basierend auf dem Inhalt

    
jfriend00 24.08.2012, 17:51
quelle
9

Um aus dem iFrame auf das Dokument des übergeordneten Elements zuzugreifen können Sie Ihren Selektoren einen Parameter hinzufügen, der Standardwert ist document, aber nichts hindert Sie daran, den Kontext so in window.parent.document zu ändern:

%Vor%

Oder fügen Sie es vor Ihrem Selektor hinzu:

%Vor%     
Gil Zumbrunnen 24.08.2012 17:51
quelle
4

Wenn Sie keine Informationen über den iframe haben (z. B. einen Bezeichner, mit dem Sie eine Abfrage durchführen möchten), verwenden Sie die frameElement des Fensters wie folgt:

%Vor%

Jetzt haben Sie den iframe-Tag selbst und können damit direkt in JavaScript arbeiten.

Um jQuery anstelle von normalem JavaScript zu verwenden, verwenden Sie Folgendes:

%Vor%

Wir haben gerade über den ersten Teil gesprochen ( window.frameElement ). Der zweite Teil ist der Kontext, in dem jQuery das Element finden und umbrechen wird. Dies ist das übergeordnete Dokument unseres aktuellen Fensters.

Wenn Sie beispielsweise eine eindeutige ID im iframe -Tag haben, können Sie Folgendes tun:

%Vor%

Jetzt ist id der Bezeichner, wenn der iframe Ihres JavaScript-Codes läuft.

P.S. Wenn window.frameElement null oder undefiniert ist, befinden Sie sich nicht in iframe .

P.P.S Beachten Sie, dass Sie möglicherweise die übergeordnete Instanz von jQuery() verwenden müssen, um Code im übergeordneten Fenster auszuführen. Dies geschieht mit window.parent.jQuery(...) . Dies gilt insbesondere, wenn Sie trigger() an einem Ereignis versuchen!

P.P.S. stellen Sie sicher, window.frameElement und nicht nur frameElement zu verwenden ... einige Browser sind etwas kaputt und sie werden nicht immer in der Lage sein, auf die korrekten Daten zuzugreifen, wenn sie nicht vollständig qualifiziert sind (obwohl 2016 dieses Problem möglicherweise gelöst wird?)

    
Alexis Wilke 06.04.2016 08:08
quelle
1

Versuchen Sie Folgendes:

Ändern Sie die Größe einiger Elemente in iframe :

%Vor%

Oder ändern Sie einfach die iframe :

%Vor%     
Oscar Jara 24.08.2012 17:47
quelle
0

Versuchen Sie Folgendes:

%Vor%     
Shankar Cabus 24.08.2012 17:49
quelle

Tags und Links