tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルvb.netから、JavaScriptのinputタグの値が取得出来ないのは?
記事No9248
投稿日: 2009/08/09(Sun) 23:25
投稿者ペルソナ
はじめて投稿させて頂きます。

vb.net2003からJavaScriptで作成した
htmlのinputタグの値を取得したいのですが
うまく取得できません。

※JavaScript(test.html)
<html>
<head>
<script language="JavaScript"><!--

function openWin()
{
 var wd;
 var objForm = document.form1 ;
 var url = "http://localhost/index.asp";

 wd = window.open( "",
          "_new",
          "resizable=yes, scrollbars=yes, location=yes, menubar=yes"
         );

 wd.focus();
 objForm.target = "_new";
 objForm.action = url;
 objForm.method = "POST";
 objForm.submit();

}

//--></script>

</head>
<body onload="openWin()">
<form name="form1">
<input id="id1" type="hidden" name="param1" value="test1">
<input id="id2" type="hidden" name="param2" value="test2">
</form>
</body>
______________________________________________________________
※VBソース
AxWebBrowser1.Navigate("C:\test.html")
Dim names As mshtml.IHTMLElementCollection
Dim input As mshtml.HTMLInputElement

input = AxWebBrowser1.Document.getElementById("id")
names = AxWebBrowser1.Document.getElementsByTagName("input")

以上を実行すると、ウォッチウィンドウで
input = Nothing
namesは、names.length = &H0
となります。
なぜ、inputタグや、nameタグが取得出来ないのか
手詰まりとなってしまいました。。。

参照したサイトは
http://www.ne.jp/asahi/hishidama/home/tech/vb/webbrowser.html#doc
です。
どなたか、ご存知の方がいらっしゃいましたら
教えて下さい。

宜しくお願い致します。

[ツリー表示へ]
タイトルRe: vb.netから、JavaScriptのinputタグの値が取得出来ないのは?
記事No9249
投稿日: 2009/08/10(Mon) 00:02
投稿者Hongliang
> AxWebBrowser1.Navigate("C:\test.html")
> Dim names As mshtml.IHTMLElementCollection
> Dim input As mshtml.HTMLInputElement
>
> input = AxWebBrowser1.Document.getElementById("id")
> names = AxWebBrowser1.Document.getElementsByTagName("input")

これだと Navigate 直後に同じメソッド内で Document 参照しているように見えますが、
ちゃんと DocumentCompleted イベント以降でやってます?
それから、id 属性が id という要素は HTML 内には無いように見えます。
id1 と id2 はあるけど。

[ツリー表示へ]
タイトルRe^2: vb.netから、JavaScriptのinputタグの値が取得出来ないのは?
記事No9250
投稿日: 2009/08/10(Mon) 11:48
投稿者ペルソナ
> > AxWebBrowser1.Navigate("C:\test.html")
> > Dim names As mshtml.IHTMLElementCollection
> > Dim input As mshtml.HTMLInputElement
> >
> > input = AxWebBrowser1.Document.getElementById("id")
> > names = AxWebBrowser1.Document.getElementsByTagName("input")
>
> これだと Navigate 直後に同じメソッド内で Document 参照しているように見えますが、
> ちゃんと DocumentCompleted イベント以降でやってます?
> それから、id 属性が id という要素は HTML 内には無いように見えます。
> id1 と id2 はあるけど。
Hongliangさん
ご教授有難うございます。
> これだと Navigate 直後に同じメソッド内で Document 参照しているように見えますが、
> ちゃんと DocumentCompleted イベント以降でやってます?

※AddHandler AxWebBrowser1.DocumentComplete, AddressOf DocumentCompleteHandler

AxWebBrowser1.Navigate("C:\test.html")
Dim input As mshtml.HTMLInputElement
Dim names As mshtml.IHTMLElementCollection
names = AxWebBrowser1.Document.getElementsByTagName("input")-@
names = doc.getElementsByName("param1")-A
input = AxWebBrowser1.Document.getElementById("id1")-B
投稿する時、※の行を省略して記載しておりました。
@とAの結果は、names.length = &H0
Bの結果は、input = Nothing
となります。
> それから、id 属性が id という要素は HTML 内には無いように見えます。
> id1 と id2 はあるけど。
input = AxWebBrowser1.Document.getElementById("id")は
間違えていました。ですが
input = AxWebBrowser1.Document.getElementById("id1")
と修正しても結果が一緒になります。

[ツリー表示へ]
タイトルRe^3: vb.netから、JavaScriptのinputタグの値が取得出来ないのは?
記事No9251
投稿日: 2009/08/10(Mon) 13:20
投稿者Hongliang
> ※AddHandler AxWebBrowser1.DocumentComplete, AddressOf DocumentCompleteHandler
>
> AxWebBrowser1.Navigate("C:\test.html")
> Dim input As mshtml.HTMLInputElement
> Dim names As mshtml.IHTMLElementCollection
> names = AxWebBrowser1.Document.getElementsByTagName("input")-@
> names = doc.getElementsByName("param1")-A
> input = AxWebBrowser1.Document.getElementById("id1")-B
> 投稿する時、※の行を省略して記載しておりました。

Navigate は、呼び出したらすぐ処理が返ります。
逆に言うと Navigate を呼んだ直後ではまだ HTML ファイルは読み込まれていません。
HTML ファイルが読み込まれていないので、その Document プロパティは無いか不完全かです。
Document プロパティの準備完了が DocumentComplete イベントです。
つまり、HTML 解析部分、getElementsByTagName とかは DocumentComplete イベントでやらなければなりません。

[ツリー表示へ]
タイトルRe^4: vb.netから、JavaScriptのinputタグの値が取得出来ないのは?
記事No9252
投稿日: 2009/08/10(Mon) 14:25
投稿者ペルソナ
> Navigate は、呼び出したらすぐ処理が返ります。
> 逆に言うと Navigate を呼んだ直後ではまだ HTML ファイルは読み込まれていません。
> HTML ファイルが読み込まれていないので、その Document プロパティは無いか
> 不完全かです。
> Document プロパティの準備完了が DocumentComplete イベントです。
> つまり、HTML 解析部分、getElementsByTagName とかは DocumentComplete
> イベントでやらなければなりません。
Hongliangさん
DocumentCompleteイベント内で
getElementsByTagNameの値を取得するよう修正しましたら
きちんと値が取得出来るようになりました。
3・4日程、悩んでいたので
本当に助かりました。
有難うございました。

[ツリー表示へ]