Frage

Hier ist das Problem:

Ich habe einen Haken in IE, das auf WebBrowser.OnNavigateComplete2 Ereignisse reagiert, um den Inhalt des Dokuments für einige präzisen Informationen zu analysieren.

Dieses Dokument enthält Frames, so dass ich blicke in die HTMLDocument.frames. Für jeden, schaue ich in die document.body.outerHTML Eigenschaft für den Inhalt zu überprüfen.

Das Problem ist, zeigt die Zeichenfolge Ich suche nie dort, während es im Finale Seite angezeigt wird. Also, ich bin auf der Suche an der falschen Stelle? Wenn es angezeigt wird, wenn die Seite vollständig geladen ist, dann ist es irgendwann heruntergeladen haben, nicht wahr? Aber in dem Objekt soll ich?

BTW, ich weiß nicht, ob die von Bedeutung ist, aber die Seite, die ich in einer ASP.NET-Anwendung suchen bin kommt.

public void OnNavigateComplete2(object pDisp, ref object url)
{
    document = (HTMLDocument)webBrowser.Document;

    mshtml.FramesCollection frames = document.frames;
    for (int i = 0; i < frames.length; i++)
    {
        object refIdx = i;
        IHTMLWindow2 frame = (IHTMLWindow2)frames.item(ref refIdx);
        string frameContent = frame.document.body.outerHTML;
    }
}

Vielen Dank für Ihre Hilfe.


@rams Dieses Ereignis wird für jede Seite viele Male ins Leben gerufen, so dass ich dachte, es war jedes Mal ein gerahmtes geladen wird, auch wenn ich bekommen, um die man nicht fangen ich suche. Wenn nicht, was das Ereignis wäre, den Frames Inhalt zu fangen?

Was ich tun möchte, einige präzise Informationen über einen präzisen Rahmen zu erfassen, dann speichern Sie es. später wird eine Webseite geladen ausgelöst durch eine Aktion des Benutzers, wo ich die Informationen benötige ich von Parsen des Rahmen bekam.

War es hilfreich?

Lösung

Sie wissen den Namen / ID des Rahmens für Inhalte suchen sind? Wenn ja, in Ihrem NavigateComplete2 Ereignisse können Sie erhalten einen Verweis auf den Rahmen wie

iFrame frm = document.frames(<your frame id>);

int readyState=0;

while(frm.readystate !=4){
// do nothing. be careful to not create an endless loop
}

if(frm.readyState==4){
   // get your content now
}

HTH

Andere Tipps

Verwenden Sie irgendeine Art von threading? Das Ausführen des Browsers in einem separaten Thread vermasselt wirklich Dinge. Versuchen Sie, führen Sie es in einem STAThread und prüfen Sie, ob Sie das richtige Ergebnis erhalten.

Der Grund Zeichenfolge nicht zeigt, ist wegen des Rahmens. Die Web-Browser-Steuerung feuert das Dokument navigieren komplettes Ereignis, nachdem es das Hauptdokument geladen ist. Zu diesem Zeitpunkt hat der Rahmen noch nicht ihre Quellen angefordert. Nachdem das Dokument von der Web-Browser-Steuerung analysiert wird, Anfragen für die Rahmenquellen sind Fragen und heruntergeladen.

Können Sie bitte beschreiben, was Sie erreichen wollen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top