Ich habe ein WebBrowser-Steuerelement in WinForms, dessen URL-Eigenschaft auf eine externe Webseite festgelegt ist. Ich habe auch einen Event-Handler für das DocumentCompleted-Ereignis. Innerhalb dieses Handlers versuche ich, spezifische Elemente zu erhalten, aber wb.Document.Body scheint den HTML-Code zu erfassen, bevor onload ausgeführt wird.HTML-Body-Inhalt in WinForms WebBrowser abrufen, nachdem das Body-Onload-Ereignis ausgeführt wurde
{System.Windows.Forms.HtmlElement}
All: {System.Windows.Forms.HtmlElementCollection}
CanHaveChildren: true
Children: {System.Windows.Forms.HtmlElementCollection}
ClientRectangle: {X = 0 Y = 0 Width = 1200 Height = 0}
Document: {System.Windows.Forms.HtmlDocument}
DomElement: {mshtml.HTMLBodyClass}
ElementShim: {System.Windows.Forms.HtmlElement.HtmlElementShim}
Enabled: true
FirstChild: null
htmlElement: {mshtml.HTMLBodyClass}
Id: null
InnerHtml: "\n"
InnerText: null
Name: ""
NativeHtmlElement: {mshtml.HTMLBodyClass}
NextSibling: null
OffsetParent: null
OffsetRectangle: {X = 0 Y = 0 Width = 1200 Height = 0}
OuterHtml: "<body onload=\"evt_Login_onload(event);\" uitheme=\"Web\">\n</body>"
OuterText: null
Parent: {System.Windows.Forms.HtmlElement}
ScrollLeft: 0
ScrollRectangle: {X = 0 Y = 0 Width = 1200 Height = 0}
ScrollTop: 0
shimManager: {System.Windows.Forms.HtmlShimManager}
ShimManager: {System.Windows.Forms.HtmlShimManager}
Style: null
TabIndex: 0
TagName: "BODY"
"<body onload=\"evt_Login_onload(event);\" uitheme=\"Web\">\n</body>"
ist der Pre-JavaScript-Inhalt. Gibt es eine Möglichkeit, den Status des Body-Tags zu erfassen, nachdem evt_Login_onload(event);
ausgeführt wird?
Ich habe auch versucht mit wb.Document.GetElementById("id")
, aber es gibt null zurück.
+1 ich diese Antwort bestätigen kann für mich gearbeitet, obwohl ich keine Notwendigkeit der Verwendung von 'SyncronizationContext.Current.Post hatte() 'weil ich single-threaded läuft. –
@StevendeSalas, sollte der gesamte Zweck von 'SyncronizationContext.Current.Post' aus dem 'onload'-Event-Handler zurückkehren und asynchron im selben UI-Thread weiterlaufen (so würden mögliche Ausnahmen nicht innerhalb des MSHTML-Codes ausgelöst, der das Event auslöst)). Der Code hat sich seither etwas weiterentwickelt, um stattdessen 'async' /' erwarten' zu verwenden, [Beispiel] (http://stackoverflow.com/a/19063643/1768303). – Noseratio
Ich versuchte einen ähnlichen Ansatz - aber nicht funktioniert .. Können Sie einen Blick http://stackoverflow.com/questions/22697987/form-become-blank-intermittierend werfen? – Lijo