• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Shell.ApplicationでのIEオブジェ)

Shell.ApplicationでのIEオブジェクト取得に関する疑問

このQ&Aのポイント
  • VBSのShell.Applicationを使用して、指定のタブページのオブジェクトを取得しようとしています。しかし、objIE.alert("hoge")ができない理由や、objIE.document.write("hoge")ができる理由が分かりません。また、Shell.Windows.item(0)というメソッドがJavaScriptのみで使用できるのか、VBSでは使用できないのかも疑問です。
  • objIE.alert("hoge")ができない理由は、alertがJavaScriptの関数であるためです。objIEはIEのインスタンスを指し、JavaScriptの関数(alert)を実行することはできません。
  • 一方で、objIE.document.write("hoge")が使えるのは、documentオブジェクトがJavaScriptのオブジェクトであるためです。documentオブジェクトはWebページの内容を操作するために使用されるものであり、JavaScriptから利用することができます。Shell.Windows.item(0)はJavaScriptのメソッドであり、VBSでは使用することができません。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (424/584)
回答No.1

≫alertはjavascriptの関数?だからですか?? 自分もなんとなく「objIE直属の関数は使えない」という認識でいましたが、 改めて調べてみると、 objIE.document.parentWindow.alert("test") とすることで呼び出せるということを知りました。 alertはブラウザのwindowオブジェクトの関数ですが、 このwindowとobjIEの内部的な違いで直接は呼び出せないが、 documentからwindowへ逆にたどることで使えるということのようです。 ≫itemというメソッドはjavascirptだけのものなのでしょうか?vbsでは使えないのですか? 使えます。 For i = 0 to Shell.Windows.Count - 1 Set tmp = Shell.Windows.Item(i) とすれば同じになります。 VBSでは1行で書けてわかりやすいのでFor Eachが好まれるのだと思います。 tmp.document はブラウザのJavaScriptのdocumentと同じです。 HTMLDocumentは形式です。 VBで Dim 変数名 As の後ろに書くのと同義です。 Shell.Windowsにはエクスプローラなども含まれます。 試しにマイコンピュータを開いた状態で、Forの後ろに WScript.Echo TypeName(tmp.document) と入れて実行してみてください。 HTMLDocument以外のものが表示されるはずです。 エクスプローラでは tmp.document.title が使えないので まずIEを特定するために最初に型判定をしているのです。

westernedlocked
質問者

お礼

すべての疑問が解決しました。ありがとうございました!!

関連するQ&A