ドキュメント操作の基本
スクリプトからWebページ内のドキュメントにアクセスする方法の基本を紹介します。
(目次)
1.ドキュメントにアクセスするスクリプトの例
スクリプトパネルに以下のスクリプト入力して実行してみてください。
set win = ScriptBrowserK.NavigateNew("http://www.scriptbrowserk.com/")
msgbox win.document.title & " " & win.document.url
win.SetFocus
win.Navigate "http://www.scriptbrowserk.com/help/sbkhelp.html"
初めにScriptBrowserK のホームページが新しいタブで開いた後に、タイトルとURLが表示され、その画面を閉じると、ScriptBrowserKのヘルプ画面が表示されると思います。
1行目のNavigateNewというのは、ScriptBrowserKオブジェクトのメソッドで、新しいタブを作成して指定したURLを開くコマンドです。ここでは、新しく作成されたタブのDocumentWindowオブジェクトをwinという変数に代入しています。
2行目ではwin変数を介して作成されたタブ(DocumentWindowオブジェクト)をアクティブにしています。
3行目ではVBScriptのmsgbox関数でHTMLドキュメントのタイトルとURLを表示しています。
ここで、win.documentのdocumentは、DocumentWindowオブジェクトのプロパティで、表示しているHTMLドキュメントを返します。HTMLドキュメントはDynamic HTMLで定義されているdocumentオブジェクトです。HTMLページのJavascriptで使用するdocumentオブジェクトと同じ物です。
4行目では、DocumentWindowオブジェクトのnavigateメソッドで、win変数が示している1行目で作成されたタブ(DocumentWindowオブジェクト)にScriptBrowserKのヘルプのページを表示しています。
2.最初から定義されているグローバル変数
「1」項のスクリプトの1行目で、ScriptBrowserK という変数が宣言されることなく使用されています。実はScriptBrowserKには最初から定義されているグローバル変数があり、その変数は宣言も定義もすることなくスクリプト内で使用できるのです。
ScriptBrowserKに最初から定義されているグローバル変数は下の3つです。
ScriptBrowserK変数:ScriptBrowserKオブジェクトを表す
SBKScriptItem変数:SBKScriptItemオブジェクトを表す
MiniBrowser変数:MiniBrowserオブジェクトを表す
(ポイント)最初から定義されているグローバル変数は、宣言も定義もすることなくスクリプト内で使用できます。
3.最初から定義されているグローバル変数は記述を省略できる
上で解説した3つのグローバル変数は、メソッドやプロパティを呼び出す際に記述を省略することができます。
例えば、「1」項の例のスクリプトの1行目は、以下のようにScriptBrowserK変数の記述を省略しても正常に動作します。
set win = NavigateNew("http://www.scriptbrowserk.com/")
今後の解説は、グローバル変数は省略して行いますので覚えておくようにしてください。
(ポイント)最初から定義されているグローバル変数は、メソッドやプロパティを呼び出す際に記述を省略することができる。
4.DocumentWindowオブジェクトとdocumentオブジェクトの関係
「1」項のスクリプトの中にでDocumentWindowオブジェクトとdocumentオブジェクトが出てきました。
DocumentWindowオブジェクトは、ScriptBrowserKのオブジェクトでHTMLドキュメントを表示しているタブ(ウィンドウ)を表すオブジェクトです。
DocumentオブジェクトはDynamic HTML(W3CのDOM)で定義されている、HTMLドキュメントを表すオブジェクトです。
2つの使い道は大まかにいうと以下のようになります。
DocumentWindowオブジェクト:スクリプトからScriptBrowserKの機能を呼び出したい場合に使用する。
Documentオブジェクト:Webページ内の特定のリンクをクリックするなどHTMLドキュメント内部に対して操作したい場合に使用する。
なお、DocumentWindowオブジェクトのDocuemntプロパティでdocumentオブジェクトを取得することは出来ますが、documentオブジェクトからDocumentWindowオブジェクトを取得することはできません。
以上です。
2007.05