虹裏専用ブラウザ B2 - トピック TOP >> window.external って何?
window.external って何?

JavaScript で window.external と言うメンバーがありますが、コレは一体なんでしょう.
external メンバーは、独自拡張が行える領域です.IEでは AddFavorite とかが定義されているようです.
 独自拡張と言える位なので、自分で定義する事が出来ます.
IEコンポーネントを引っ掻き回す手段に IDocHostUIHandler と言うCOMインタフェースが存在します.
(右クリック制御・ショートカットキー制御・URLトレース・ユーザースタイルシート 等が改造でき、主に ぷにる・ドーナツのIE系タブブラウザで使用されています.)
その IDocHostUIHandler に GetExternal なるメンバーが存在します. 
もう何するメンバーか分かると思いますが、window.external が返すデータを設定すると、設定したデータが JavaScript から参照出来るようになります.
GetExternal  の戻り値は IDispatch なので COMオブジェクトを返せばいいわけです(IDispatch は VB6のObject型です).
VBのクラスインスタンスが JavaScript・VbScript から見えるのって何か素敵じゃないですか...
(ただ クラスメンバーの引数・戻り値は Variant型 にしないといけませんがね) 
余談、IDispatch = VB6のObject型 なのですから、VB6で作成されたアプリケーションはCOMオートメーションの塊な訳です.
 
ちなみに は VB6 では定義されていません.別途にタイプライブラリが必要になります.
( .NETでは ソース上でCOMインタフェースを定義する仕組みがあるので VB6 よりも楽に実装できまが 問題はIDispatchの実装でしょうか)
以下は VB6用にWin32API・COMインタフェースを定義したタイプライブラリです.
実際に 2B のコンパイルで使用しているヤツなのですが 興味がありましたらどうぞ.
2008/02/09版
 
[edited 2008/02/09 22:33]