プロが教える店舗&オフィスのセキュリティ対策術

C#のwebbrowserでDocumentCompletedは判定したいのですが、
サイトによって、複数回発生して実際に全部読み終わった時をどうやって判断すればいいのかわかりません。

たとえば、アマゾンのサイト(http://www.amazon.co.jp)を観たのですが、
7回以上発生します。

各、DocumentCompletedでURLを取得したのですが同じでしたので、
URLからの判断は無理でした。

完全にページを読み終わったときに、
DocumentText
で、HTMLの情報を取得するという単純なプログラムを作りたいのですが
どのように書けばいいのでしょうか?

よろしくお願いします。

A 回答 (2件)

http://ironcat.info/tamabukuro/?p=93

イベントを処理するメソッド内で、senderのReadyStateプロパティを見ます。

http://msdn.microsoft.com/ja-jp/library/system.w …
http://msdn.microsoft.com/ja-jp/library/system.w …

readyState == WebbrowserReadyState.Completed が読み込み完了です。

この時のコントロールの状態は、
・すべてのドキュメントがロードを完了している です。
    • good
    • 0
この回答へのお礼

すごい!!!
こんな方法があったんですね。
解決しました。

ありがとうございます。

お礼日時:2013/07/11 22:48

>各、DocumentCompletedでURLを取得したのですが同じでしたので、


>URLからの判断は無理でした。

using System.Diagnostics; を追加して、Traceを使い下記のように確認してみました。

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
 {
  Trace.WriteLine("URL=>" + e.Url);
 }

表示結果は…
URL=>http://www.amazon.co.jp/aan/2009-09-09/static/am …
URL=>javascript:void(false)
URL=>javascript:void(false)
URL=>javascript:void(false)
URL=>http://www.amazon.co.jp/
URL=>http://www.amazon.co.jp/aan/2009-09-09/static/am …
URL=>http://aax-fe.amazon-adsystem.com/s/iu3?d=amazon …
となりましたが……。
# 実行するタイミングによっては一部URLが異なる…かも知れませんけどね。

 if (webBrowser1.Url == e.Url)
 {
  // ここでDocumentTextを参照する。
 }

でいいのではないでしょうか?
他のURLはリンクされている画像とか外部サイトの広告とかと思われるので、DocumentText自体には影響しないと思われますけど……。
# javascript:void(false)についてはよく判りませんが…。
    • good
    • 0
この回答へのお礼

ありがとうございます。

そんな方法で、URLを確認できるんですね。
DocumentCompletedの中で、messeagebox.show(url)で表示していたら、すべてhttp://www.amazon.co.jp/でした。

お礼日時:2013/07/11 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!