1

diese Frage klingt dumm aber wie kommt es, wenn ich die Funktion GetElementsByTagname ("frame") verwende, gibt es nur 3 als eine Länge und nicht 5 wie ich erwartet? HierGetelementsByTagName scheint nicht richtig zu funktionieren

ist die HTML of the webpage wo ich gezählt 5 mal die Erscheinung des tagname "Rahmen", aber wenn ich fragen Sie nach der Länge in VBA I 3 erhalten ...

Meine Beobachtungen:

1) Sie kann sehen, dass 3 ist die Anzahl der Mainframes (top_navigation, contentframe, dummyframe)

2) Wenn ich versuche, auf einen der Mainframes über Getementbyname zuzugreifen, funktioniert es, aber wenn ich versuche, auf die Subframes von Contentframe zuzugreifen (linkedavigation oder postfach content) es funktioniert nicht (0 artikel gefunden)

Hier ist mein Code:

Dim Frame As IHTMLElementCollection 
    Set Frame = IEDoc.getElementsByName("contentframe") ' this works and returns 1 item 
    MsgBox Frame.Length 
    Set Frame = IEDoc.getElementsByName("postfachcontent") 
    MsgBox Frame.Length ' this returns 0 item 


Dim Collection As IHTMLElementCollection 

Set Collection = IEDoc.getElementsByTagName("frame") 
MsgBox Collection.Length ' this returns 3 and I expected 5... 
+0

Haben Sie versucht, eine MSHTML.FramesCollection zu verwenden? Einstellung von IEDoc.Frames? –

+0

Ich habe noch nie vom Typ MSHTML.FramesCollection gehört. Wie benutze ich das? Wenn ich einfach den Typ von _Collection_ zu ihm ändere, habe ich natürlich eine Diskrepanz. – Seb

+0

Verwenden von IEDoc.Frames? –

Antwort

0

Nur 3 Bilder auf dieser Seite sind, der Rest in einem HTML-Rahmen eingebettet, die getElementsByTagName nicht zugreifen, da es ein anderer DOM-Baum ist.

+0

Hmmm ich sehe, und ist gibt es eine Möglichkeit, auf den Inhalt von diesen 3 Mainframes zuzugreifen? – Seb

Verwandte Themen