教えてください。
ブラウザ(IE)上に貼り付けたActiveXコントロールから、
JavaScriptの関数を直接コールすることは可能でしょうか?
先ほど書き忘れました。。。
VB6.0
IE5.5以上です。
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を
用いて『イベント』を実装し、それをスクリプト側から
利用する方法もあるかと思います。
>JavaScriptの関数を直接コールすることは可能でしょうか?
>JScriptの標準関数って、さほど多くないですよね。
JavaScript と JScript は違うものでは?
http://www.interq.or.jp/student/exeal/dss/ref/jscript/about.html#p_2
(JavaScript、JScript の概要)
>>> ブラウザ(IE)上に貼り付けたActiveXコントロールから、
>>> JavaScriptの関数を直接コールすることは可能でしょうか?
> JavaScript と JScript は違うものでは?
ですます。
そして、IE で動作するのは「JScript」であって、
厳密には「JavaScript」ではありませんね。
JScriptは、(今回使われているような)Activeコンポーネントが
利用可能になっているという点が大きな特徴です。
しかしながら IEは、<script language="JavaScript"> という要素も
実行可能な設計になっています。(ただし、JScript として解釈されますが)
そのため、厳密には JScript ≠ JavaScript ではあるのですが、
IE上で動作する JScript の事を JavaScript と呼ぶ事は、
世間的には珍しく無いようです。
ただし、他のブラウザ上で動作している物を JScript と呼ぶのは
明らかに間違いですけれどね。
魔界の仮面弁士 様、ありがとうございました。
教えていただいた方法で、無事解決いたしました。
ツイート | ![]() |