- PR -

webbrowserコントロールの情報取得

1
投稿者投稿内容
mm
会議室デビュー日: 2004/09/25
投稿数: 17
投稿日時: 2005-08-24 19:17
【開発環境】
Windows2000 Pro(SP4)
.NET2003 VB.NET

お世話になっております。表題の件で質問があります。

http://support.microsoft.com/default.aspx?scid=kb;ja;311284
上記サイトを参考にWebBrowserコントロールのイベント取得を実装しました。
onclickイベントで選択されたコントロールの情報を取得しようとしているのですが
取り方が分からず行き詰まっております。
実際に取りたい情報は↓の"name1"という値です。
-----------------------------------------
<DIV id="ABC" class="name1">
<INPUT TYPE="image" SRC="test.jpg" >
</DIV>
-----------------------------------------
srcElementのプロパティ類は試してみましたが違いました。
(使い方が間違っているのかもしれません、この時のtagNameは"INPUT"です)

ご存知の方がおられましたら、ご教授お願い致します。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-08-24 20:58
順番に考えていけば自明だと思うのですが。
DOMの概念が分かってないと難しいのかな。

まず、クリックされたのはINPUT要素ですよね。
ですからonclickイベントはINPUT要素で発生します。
srcElementはイベントが発生した要素を表しますから、そのtagNameはこのときINPUTになります。

さて、DOMでは親子関係で各要素を管理します。
最上位がHTML、その子要素にHEADとBODY。HEADの子要素にMETAやTITLE、BODYの子要素にはDIVやらかんやら。

コード:
<div id="ABC" class="name1">
    <input type="image" src="test.jpg">
</div>


というHTML(の一部)の場合、DIVの子要素としてINPUTが存在します。
逆に言うと、INPUTの親要素としてDIVが存在していることになります。
つまり"srcElement=INPUT"の親要素を取得すればDIVの各種情報にタッチできると言うことです。
IHTMLElement型であるsrcElementのプロパティを見ていけばそれらしいのが見つかります。

さて、こうやってDIVを指すIHTMLElement型のオブジェクトが取得できました。
あとはこの要素が持つclass属性の内容を取得するだけです。
これも同じくIHTMLElementのプロパティを見ていくと、そのままの名前のプロパティが存在します。
//getAttributeではclass属性は取得できないようですねー。
mm
会議室デビュー日: 2004/09/25
投稿数: 17
投稿日時: 2005-08-24 22:53
>Hongliangさん

早々のご回答ありがとうございます。

Hongliangさんの説明のおかげで分かりました。
-----------------------------------------
#eはmshtml.IHTMLEventObj
e.srcElement.parentElement.id
e.srcElement.parentElement.className
-----------------------------------------

!!ありがとうございました!!
1

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