- PR -

SHDocVw.InternetExplorer で 各要素のINDEXを取得したい

1
投稿者投稿内容
こばやし
会議室デビュー日: 2006/05/08
投稿数: 2
投稿日時: 2006-05-08 15:19
VB.NET2003/IE6.0/WindowsXP(Pro)の環境にて
SHDocVw.InternetExplorerを使って
ブラウザに表示されているHTMLドキュメントの制御などなどをしていますが、
A = CType(IE.Document.links(Name:="HogeHoge"), mshtml.HTMLAnchorElementClass)
と定義したときに
IE.Document.links(0)のように各要素のIndex(番号?)で指定したときのその番号を取得したいのですが、それらしきプロパティがなく困っています。
実際にはどのように取得すればよいでしょうか?


Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-05-08 15:30

コレクションはいくらでも考えられるので、そんなプロパティには意味がありません。
ですので、普通に Document.links をぐるぐる回って name が一致するのを探していくのが良いでしょう。
こばやし
会議室デビュー日: 2006/05/08
投稿数: 2
投稿日時: 2006-05-09 11:21
参照しようとしているWEBページがおそらくASPか何かで動的に作られている
ページのようなので、Indexなどのプロパティも可変となる可能性が高いです。
やはり、nameで一致するものを探すのがベターですね。

あと、気になったのが、ほとんどのコレクションのnameプロパティの値がNothingに
なっていて、ほしいコレクションを特定できない場合があります。
※ファイル名の先頭が「A」で始まるものをリンク(ダウンロード)するところまでは、
仕様的に固まっています。(Aで始まるものが複数存在した場合はまた方法を考えるのですが)
このような場合は、hrefプロパティとか、nmaepropプロパティとかでフルパスからファイル名を取得して先頭の文字で判断するしかないでしょうか?
もう少しスマート(汎用的な)方法があればと思うのですが。

Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-05-09 11:49
引用:

このような場合は、hrefプロパティとか、nmaepropプロパティとかでフルパスからファイル名を取得して先頭の文字で判断するしかないでしょうか?
もう少しスマート(汎用的な)方法があればと思うのですが。


どういうものが汎用的な方法として考えられますか?
たとえば特定のテーブルの中限定とかいう風に DOM ツリーを絞っていく程度にしか私には思いつきませんが。
対象の HTML の形式が一切分からないのなら、それこそ総当たりに確認するしかないでしょう。ある程度分かっているのなら、それに従って解析するまでです。
要求が「どんなものかも分からない HTML のハイパーリンクから、リンクのファイル名が A で始まるものの URL を取得しろ」なら、そりゃファイル名を確認していくしかありません。
1

スキルアップ/キャリアアップ(JOB@IT)