C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: hasChildNodesの型不一致エラー


(過去ログ 103 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■61394 / inTopicNo.1)  hasChildNodesの型不一致エラー
  
□投稿者/ やじゅ (1945回)-(2011/08/11(Thu) 14:28:52)
やじゅ さんの Web サイト

分類:[VBScript] 

WSHのVBScriptでDOM解析をしているのですが、WindowsXPのIE8環境では動作した部分が
Windows7のIE9の環境では、If obj.hasChildNodes Then のところで下記のエラーが発生します。

エラー 型が一致しません。[string:"function hasChildNo"]

WindowsOSの違いで何か影響しているのでしょうか?

ミニマムコードを作成してみました。
Dim objIE
Dim obj

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://endic.naver.jp/srch/all/N/" & "VEGETABLE" & "?sm=etp_enh"

Do Until objIE.Busy = False
   WScript.sleep(250)
Loop

For Each obj In objIE.Document.getElementById("zoom_content").ChildNodes
   If obj.hasChildNodes Then
	MsgBox obj.parentNode.nodeName
   End If
Next

Set objIE = Nothing

よろしくお願いします。

引用返信 編集キー/
■61401 / inTopicNo.2)  Re[1]: hasChildNodesの型不一致エラー
□投稿者/ 逆運の覇者 (53回)-(2011/08/11(Thu) 16:50:59)
ブラウザのビジー状態を判定するための,より良い方法
(WSHでIEを自動操作する際,COMのアプリケーションイベントを利用する)
http://d.hatena.ne.jp/language_and_engineering/20100410/p1

引用返信 編集キー/
■61410 / inTopicNo.3)  Re[2]: hasChildNodesの型不一致エラー
□投稿者/ やじゅ (1947回)-(2011/08/11(Thu) 20:11:40)
やじゅ さんの Web サイト
No61401 (逆運の覇者 さん) に返信
> ブラウザのビジー状態を判定するための,より良い方法
> (WSHでIEを自動操作する際,COMのアプリケーションイベントを利用する)
> http://d.hatena.ne.jp/language_and_engineering/20100410/p1

回答ありがとうございます。
For文の前にHTML情報を表示させてみると正常に取得できているので、その部分は問題ないかと思っております。

質問を投稿してから別アプローチで調べてみたところ、WScript.CreateObject("htmlfile")を使えることが分かりました。
これを使うと hasChildNodes のエラーなく値を取得できたので目的は達成しました。

ただ、この現象自体はWindowsOSの不具合っぽい気がしますね。


Dim objIE
Dim obj
Dim objDOM

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "http://endic.naver.jp/srch/all/N/" & "VEGETABLE" & "?sm=etp_enh"
 
Do Until objIE.Busy = False
   WScript.sleep(250)
Loop

Set objDOM = WScript.CreateObject("htmlfile")
objDOM.write(objIE.Document.body.innerHTML)
Set objIE = Nothing

For Each obj In objDOM.getElementById("zoom_content").ChildNodes
   If obj.hasChildNodes Then
       MsgBox obj.parentNode.nodeName
   End If
Next

引用返信 編集キー/
■61472 / inTopicNo.4)  Re[3]: hasChildNodesの型不一致エラー
□投稿者/ やじゅ (1948回)-(2011/08/15(Mon) 11:32:17)
やじゅ さんの Web サイト
hasChildNodesの型不一致エラーそのものは解決してませんが、
WScript.CreateObject("htmlfile")を使うことで対処しました。

その成果として、下記を公開しました。

オンライン英語辞書から英単語情報(音声)を取得するツール VBScript版
http://blogs.wankuma.com/yaju/archive/2011/08/15/201577.aspx

解決済み
引用返信 編集キー/
■61473 / inTopicNo.5)  Re[1]: hasChildNodesの型不一致エラー
□投稿者/ Azulean (821回)-(2011/08/15(Mon) 11:49:30)
No61394 (やじゅ さん) に返信
> If obj.hasChildNodes Then

obj.hasChildNodes() とか?
http://msdn.microsoft.com/en-us/library/ms536445.aspx によると Method らしいので。
解決済み
引用返信 編集キー/
■61475 / inTopicNo.6)  Re[2]: hasChildNodesの型不一致エラー
□投稿者/ やじゅ (1949回)-(2011/08/15(Mon) 18:53:28)
やじゅ さんの Web サイト
No61473 (Azulean さん) に返信
>> If obj.hasChildNodes Then
>
> obj.hasChildNodes() とか?
> http://msdn.microsoft.com/en-us/library/ms536445.aspx によると Method らしいので。

If obj.hasChildNodes() Then にしたらエラーが出なくなり正常に取得できました。
これで本当に解決ですね、ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -