マルチフレームで、特定フレーム又は全フレームの読み終わりを判断するには?

解決


まりの  2005-12-01 05:12:41  No: 93021

VB.NET2003で、ActiveX の WebBrowser を使っています。
AxWebBrowser1_DocumentCompleteでマルチフレームのページの読み終わりを判断し、特定フレームのリンクを順次クリックしていこうと思っています。
しかし、上記のイベントは、マルチフレームの各フレームのダウンロード開始時点で「それぞれ」発生するようです。

マルチフレームの中の特定のフレーム(名前は分かっています)または、全部のフレームの読み終わりでイベントが発生するイベントハンドラはないでしょうか?
また、上記のAxWebBrowser1_DocumentCompleteでも、特定フレームの読み終わりや全フレームの読み終わりが判断できれば、それでもいいのですが。

ご存じの方、簡単な方法があったら教えてください。


魔界の仮面弁士  2005-12-01 06:04:47  No: 93022

イベントの引数から判断できませんか?


ハイライト  2005-12-01 08:44:55  No: 93023

TrueとFalseのフラグを立てて,

Private Sub Command1_Click()
  blnFlag = True
  WebBrowser1.Navigate2 "URL"
End Sub

Private Sub WebBrowser1_DocumentComplete()
  If blnFlag = True Then
     Frames = Frames + 1 'フレームが読み込まれる回数をカウントします
     If Frames=3 Then  ’3回読み込まれたら
        MsgBox "完了"
     End If
  End If
End Sub

という感じでできますよ^^


魔界の仮面弁士  2005-12-01 20:13:18  No: 93024

# ハイライトさんのコードが、VB6用の物に見えるのは気のせい?(汗)

> しかし、上記のイベントは、マルチフレームの各フレームの
> ダウンロード開始時点で「それぞれ」発生するようです。
ダウンロード開始時 に発生するのは、DownloadBegin イベントですよね。

DocumentComplete は、ダウンロード完了後、それぞれの文書の解析
(.Document への読み込み)が完了した時点で発生します。

それと、フレーム単位という話においては、WebBrowser_V1 に、
FrameBeforeNavigate / FrameNavigateComplete というイベントが
あるのですが、今回の目的では使えないでしょう。

AxWebBrowser1.Document 経由で辿るのであれば、やはり、DocumentComplete の
発生を待った方が良いと思います。各フレームのどの文書が読み込まれているのかは、
イベント引数 の URL から判断する事ができます。

たとえば、WithEventsな変数を、「As SHDocVw.WebBrowserClass」や
「As SHDocVw.WebBrowser」にて宣言していた場合には、
    If Hoge.Equals(URL) Then
      '読み込み完了
    End If
のようにして判定できます。
# 上記の "URL" は、DocumentCompleteイベントの第二引数、
# "Hoge" は、 Navigate(またはNavigate2) に使った URL文字列です。

あるいは、WithEvents 変数が、「As AxSHDocVw.AxWebBrowser」で
宣言されていた場合(通常はこちらでしょうね)には、
    If HOGE.Equals(e.URL) Then
      '読み込み完了
    End If
という感じですね。
# 上記の "e" は、DocumentCompleteイベントの第2引数、
# "Hoge" は、 Navigate(またはNavigate2) に使った URL文字列です。


まりの  2005-12-02 01:01:38  No: 93025

魔界の仮面弁士さん、ハイライトさん、さっそくのご指導ありがとうございました。e.uRlの内容を判定する方法でうまくいきました。
ありがとうございました!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加