如何在IE中从ActiveX执行Javascript

时间:2012-08-30 18:56:20

标签: activex npapi

我有一个javascript例如

try { __flash__toXML(onYouTubePlayerReady("")) ; } catch (e) { "<undefined/>"; } .

在FireFox中,Adobe插件(Flash播放器插件)通过调用NPN_Evaluate在{...}}上执行,而NPN_Evaluate()也返回结果。

我没有得到如何在IE中,adobe flash player(ActiveX)执行上述和相同的JAVA脚本。但我在IShockwaveFlash的SetReturnValue()中看到了</undefined><string>3456</string>的结果。看起来Adobe ActiveX没有使用IHTMLWindow2::execScript()来执行JS。

我想知道如何从ActiveX执行JS代码。

我知道如何在IHTMLWindow2::execScript()的帮助下调用JS函数。但IHTMLWindow2::execScript()不会返回结果。我也知道如何在IDispatch()接口的帮助下调用JS函数。

我想知道Adobe ActiveX如何执行上述代码。我也在为IE开发一个类似的ActiveX,我想从ActiveX执行类似的JS(上面一个)。

3 个答案:

答案 0 :(得分:1)

ActiveX使用IE的IHTMLWindow2 :: execScript()来执行javascript,但IHTMLWindow2 :: execScript()不返回结果。它使用IshockwaveFlash :: SetRerernValue和IShockwaveFlash :: CallFunction返回javascript结果。

答案 1 :(得分:0)

据我所知,没有办法做你要求做的事;至少如果它是相当新的,只适用于较新版本的IE(我最近没有看起来很难)。但是,一个选项是将脚本包装在函数调用中,并将该调用的结果保存到某个全局变量(在窗口中),然后可以查询该变量以获取返回值。

我不确定,但我猜这是闪光灯正在做的事情。

答案 2 :(得分:0)

虽然我同意SWFObject是最好的方法,但您可以通过'src''movie'参数传递值。 EX:

'src', '/resources/flash/corporateWebsitButtons?variable=value&variable2=value'
'movie', '/resources/flash/corporateWebsitButtons?variable=value&variable2=value'