VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/04/02(Wed) 02:58
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^5: IEオブジェクトのDocumentオブジェクトについて

> 再帰化以外に関しては解決したと思われるのですがやはり再帰化でHTMLコードの全文が取得できません。

あれ? 元質問では、『テキスト全てを参照したい』とあったので、
HTMLのテキストノードの内容を調べたい、という意味かと思ったのですが…
今度は『HTMLコードの全文』を取得したいという事になっていますね。(^^;)


テキストノードの内容を取得したいという意味なら、最初に提示された「outerTextプロパティ」でOKですよ。
(内側のテキストを取得するなら、「innerTextプロパティ」ですね)

ちなみに、フレーム組みのページの時にタイトル部しか表示されなかったのは、HTMLが

    <html>
      <head>
        <title>フレームテスト</title>
      </head>
      <frameset cols="50%,*">
        <frame src="frame1.htm" name="frame1">
        <frameset rows="50%,*">
          <frame src="frame2.htm" name="frame2">
          <frame src="frame3.htm" name="frame3">
        </frameset>
      </frameset>
    </html>

のような構造だからです。テキストノードが title部しか無いわけですね。

# 実際には、noframesにテキストノードが含まれる事もありますが、
# innerTextプロパティは、noframes内部のテキストノードを無視します。


> また、WIDNOWオブジェクト内のどのプロパティにHTMLが入っているのかがわかりませんでした。
先に回答しましたように、『windowオブジェクトのdocumentプロパティ』で、
「(DHTMLでいうところの)documentオブジェクト」が取得されます。

documentオブジェクトさえ取得できれば、あとは、.all(0).innerText でテキストノードの内容を取得したり、
.documentElement.outerHTML で、現在解析されているHTMLの構造を文字列として取得したり、
.body.styleオブジェクトを書き換えて、HTML文書の色を変えたりする事ができますよ。



> そもそもIEオブジェクトに対しての理解が余りありません。
「InternetExplorerオブジェクト」に対する理解は、そこそこあるように見受けられました。
不足しているとすれば、それはおそらく Dynamic HTML(というか、MSHTML)に対する知識だと思います。

例えば、何度も話題に上がった「documentオブジェクト」ですが、
それが持つメソッドやプロパティやコレクションは、以下のようになります。(英語情報です)
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_document.asp

英語版が読みづらいようであれば、日本語版を一緒に参照されると良いかも知れません。
(ただし日本語版は、IE4当時から更新されていないので、情報としてはかなり古いです)
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpisdk/dhtml/doc_object/doc_object.htm



> お手数おかけいたしますがサンプルコードで教えて頂けると非常にあり難いです。
再起処理の部分に付いていえば、単純にはこんな感じですかね。

Private Sub test(ByVal ieDoc As Object)
  If ieDoc Is Nothing Then
    Exit Sub
  End If
  If ieDoc.frames.length = 0 Then
      Debug.Print ieDoc.documentElement.outerHTML
  Else
      Dim n As Long
      For n = 0 To ieDoc.frames.length - 1
          test ieDoc.frames.item(n).document
      Next
  End If
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -