5
URLプロパティが外部Webページに設定されているWinFormsにWebBrowserコントロールがあります。 DocumentCompletedイベントのイベントハンドラもあります。このハンドラの中で、特定の要素を取得しようとしていますが、wb.Document.Bodyはonloadが実行される前にHTMLをキャプチャしているようです。body onloadイベントの実行後にWinForms WebBrowserでHTML本文の内容を取得する
{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>"
は、JavaScript前のコンテンツです。 evt_Login_onload(event);
を実行した後、bodyタグの状態をキャプチャする方法はありますか?
wb.Document.GetElementById("id")
も試してみましたが、nullを返します。ここで
+1私はこの答えを確認することができ、私は 'SyncronizationContext.Current.Postを使用する必要がありませんでしたが、私のために働きました() '私はシングルスレッドを実行しているからです。 –
@StevendeSalas、 'SyncronizationContext.Current.Post'の全目的は、' onload'イベントハンドラから戻り、同じUIスレッド上で非同期的に続行することでした(可能性のある例外は、イベントを発生させるMSHTMLコード内にスローされません)。コードは、それ以来、代わりに 'async' /' await'を使用するように進化しました。[example](http://stackoverflow.com/a/19063643/1768303)。 – Noseratio
私は同様のアプローチを試みましたが、うまくいきませんでした。見てみましょうhttp://stackoverflow.com/questions/22697987/form-become-blank-intermittently? – Lijo