it-swarm.com.de

So wählen Sie ein Element in iframe mithilfe von document.getElementById aus

Ich habe ein iframe wie dieses

<iframe name="myframe1" id="myframe1" width="100%" height="100%" src="a.html">
<html>
    <head></head>
    <frameset name="myframe2" cols="0%, 100%" border="0" frameBorder="0" frameSpacing="0">
        <frame name="page1" src="c.html" scrolling="no"></frame>
        <frame name="page2" src="d.html" >
            <html>
                <head></head>
                <body id="top">
                    <div id="div1">
                        <div id="div2">
                            <div id="div3">
                                <ul id="x">
                                    <li>a</li>
                                    <li>b</li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </body>
            </html>

        </frame>

    </frameset>
</html>
</iframe>

Ich möchte auf das Element "x" verweisen. Ich habe es auf verschiedene Arten versucht, aber ich konnte keine Lösung finden.

58
ishk
document.getElementById('myframe1').contentWindow.document.getElementById('x')

Fiddle

contentWindow wird von allen Browsern einschließlich der älteren IE-Versionen unterstützt.

Beachten Sie, dass Sie aufgrund der Same Origin Policy nicht auf deren Inhalt zugreifen können, wenn das iframe des src aus einer anderen Domain stammt.

136

benutze contentDocument um dies zu erreichen

var iframe = document.getElementById('iframeId');
var innerDoc = (iframe.contentDocument) 
               ? iframe.contentDocument 
               : iframe.contentWindow.document;

var ulObj = innerDoc.getElementById("ID_TO_SEARCH");
18

(Dies ist zu der gewählten Antwort hinzuzufügen)

Stellen Sie sicher, dass iframe vor Ihnen geladen ist

contentWindow.document

Andernfalls ist Ihr getElementByIdnull.

PS: Kann nicht kommentieren, immer noch schlechte Reputation, aber dies ist eine Fortsetzung der gewählten Antwort, da ich einige gute Debugging-Zeit damit verbracht habe, herauszufinden, ob ich das Laden von iframe erzwingen sollte, bevor ich sie auswähle das innere Iframe-Element.

2
Pat

In meinem Fall habe ich versucht, die Symbolleiste pdfTron abzurufen, aber leider ändert sich die ID jedes Mal, wenn Sie die Seite aktualisieren.

Also habe ich es geschafft, indem ich es getan habe.

const pdfToolbar = document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('HeaderItems');

Wie in dem von tagName geschriebenen Array haben Sie in Ihrer Anwendung immer den festen Index für iFrames.

0
Divyanshu Rawat