人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VisualBasic2005で勉強中です。WebBrowser1.Document.GetelementsByTagName("a").Item(0).InvokeMember("click") でページを移動したとします。この場合、WebBrowser1に移動後のページ内容が表示されているにもかかわらず、データ自体はWebBrowser1のDocumentTextプロパティに格納されていないようなのですが、どこに格納されているのでしょうか? よろしくお願い申し上げます。

●質問者: crashtruck
●カテゴリ:コンピュータ
✍キーワード:Click データ プロパティ 勉強
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● KirakiraHikaru
●60ポイント

的外れな回答だったらもうしわけございません。


DocumentTextはいつ参照していますか?

InvokeMember("click")

の直後でしょうか?


WebBrowserコントロールは非同期でページを読み込むので、

clickを実行させた直後だと、ページの読み込みが完了していない状態だと思います。


ですので、

clickを呼び出す前の状態(Complete)から、

いったん他の状態に変化してから、読み込みが完了した状態(Complete)になった後に、DocumentTextを参照してみると、遷移後のページが設定されていると思います。

http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.we...


まずは、簡単に確認してみるために、

System.Threading.Thread.Sleep(5000)

のようにして5秒くらい待機させてからDocumentTextを参照してみてください。

◎質問者からの返答

ご解答ありがとうございます。しかし、DodumentCompletedイベント後にで取得しても、だめでした。そういうタイミング的な問題ではなくて、InvokeMemberが本質的にNavigateと全く違う動作をしているように思っているのですが。


2 ● KirakiraHikaru
●10ポイント

私の環境(VisualBasic2005 Pro)で確認したところ、

WebBrowser.Documentから取得したHtmlElementのInvokeMemberメソッドで、

タグAのClickを実行させると、読み込み完了後のDocumentTextは読み込んだページの内容に変化していました。

同様に、FormタグのSubmitをInvokeMemberにより実行しても、遷移先のページの内容に変化していました。

(Document・DocumentTitle等も変化していました)


WebBrowserコントロールを設置したFormのWebBrowser1.DocumentCompletedのイベントハンドラ内であれば確実に変わっていると思います。(フレームが複数存在するページの場合はそのページ数分呼ばれます)


また、InvokeMemberメソッドを実行したメソッド内で、DocumentTextが変化するまで待機しても同様です。(ReadyStateで見たほうがよい)


たとえば、

Sub DocTextTest()

Dim prevDocText As string = WebBrowser1.DocumentText

WebBrowser1.Document.Links(0).InvokeMember("Click")

Dim start As Date = Now

Do

'DoEventsを使用しないと、WebBrowser1の処理が滞る

System.Windows.Forms.Application.DoEvents()

'最大待機秒数(無限ループしないように念のため)

If DateDiff(DateInterval.Second, start, Now) > 10 Then

Exit Do

End If

'DocumentTextが変化するまで待機

If prevDocText <> WebBrowser1.DocumentText Then

Exit Do

End If

Loop

End Sub


InvokeMemberでなくNavigateの後でも同様の方法で待機できます。

ちなみにInvokeMemberはリフレクションという機能で、動的に型のメンバにアクセスできるものです。(これを利用するとPrivateなものにもアクセスできてしまいますが・・・)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ