ActiveXコントロールからJavaScrpitを実行するには?

解決


hiro  2005-04-21 17:18:49  No: 121142  IP: [192.*.*.*]

教えてください。

ブラウザ(IE)上に貼り付けたActiveXコントロールから、
JavaScriptの関数を直接コールすることは可能でしょうか?

編集 削除
hiro  2005-04-21 17:32:25  No: 121143  IP: [192.*.*.*]

先ほど書き忘れました。。。
VB6.0 
IE5.5以上です。

編集 削除
魔界の仮面弁士  2005-04-22 10:31:41  No: 121144  IP: [192.*.*.*]

JScriptの標準関数って、さほど多くないですよね。
GetObject/ScriptEngine/ScriptEngine{Build|Major|Minor}Version程度。

なので、この場合の「関数」と言うのは、自作された functionの事を
指しているという前提で回答します。


で。<script>要素で宣言された function を、ActiveX側から
利用するというのは、コールバック処理のイメージになりますね。

この場合、ActiveX側には、
  Private mProp As Object
  Public Property Get Prop() As Object
    Set Prop = mProp
  End Property
  Public Property Let Prop(ByVal vNewValue As Object)
    Set mProp = vNewValue
  End Property
  Public Property Set Prop(ByVal vNewValue As Object)
    Set mProp = vNewValue
  End Property
のようなプロパティを実装しておき、それを
    CallByName mProp, vbNullString, VbMethod
として呼び出すという手法があります。

そしてこの時、呼び出し側のスクリプトでは、
  JScriptの場合:
    function X(){
      …処理…
    }
    objControl.Prop = X
  VBScriptの場合:
    Function X()
      …処理…
    End Function
    objControl.Prop = GetRef("X")
のようにして、あらかじめ呼び出させたい function を、
ActiveX側に伝えておく必要があります。

もしくは、ActiveX側で Eventステートメント/RaiseEventを
用いて『イベント』を実装し、それをスクリプト側から
利用する方法もあるかと思います。

編集 削除
dark  2005-04-22 11:21:24  No: 121145  IP: [192.*.*.*]

>JavaScriptの関数を直接コールすることは可能でしょうか?

>JScriptの標準関数って、さほど多くないですよね。

JavaScript と JScript は違うものでは?
http://www.interq.or.jp/student/exeal/dss/ref/jscript/about.html#p_2
(JavaScript、JScript の概要)

編集 削除
魔界の仮面弁士  2005-04-22 12:00:48  No: 121146  IP: [192.*.*.*]

>>> ブラウザ(IE)上に貼り付けたActiveXコントロールから、
>>> JavaScriptの関数を直接コールすることは可能でしょうか?
> JavaScript と JScript は違うものでは?
ですます。

そして、IE で動作するのは「JScript」であって、
厳密には「JavaScript」ではありませんね。
JScriptは、(今回使われているような)Activeコンポーネントが
利用可能になっているという点が大きな特徴です。

しかしながら IEは、<script language="JavaScript"> という要素も
実行可能な設計になっています。(ただし、JScript として解釈されますが)

そのため、厳密には JScript ≠ JavaScript ではあるのですが、
IE上で動作する JScript の事を JavaScript と呼ぶ事は、
世間的には珍しく無いようです。

ただし、他のブラウザ上で動作している物を JScript と呼ぶのは
明らかに間違いですけれどね。

編集 削除
hiro  2005-04-22 14:59:57  No: 121147  IP: [192.*.*.*]

魔界の仮面弁士 様、ありがとうございました。
教えていただいた方法で、無事解決いたしました。

編集 削除