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

解決


hiro  2005-04-22 02:18:49  No: 121142

教えてください。

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


hiro  2005-04-22 02:32:25  No: 121143

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


魔界の仮面弁士  2005-04-22 19:31:41  No: 121144

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 20:21:24  No: 121145

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

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

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


魔界の仮面弁士  2005-04-22 21:00:48  No: 121146

>>> ブラウザ(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 23:59:57  No: 121147

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加