2012-08-30 23 views
0

执行JavaScript我有例如如何从ActiveX控件在IE

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

在Firefox中一个JavaScript,Adobe公司的插件(Flash播放器插件)以上的Java脚本执行调用NPN_EvaluateNPN_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(上面的)。

回答

0

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

我不确定,但我猜想这是闪光灯的功能。

1

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

0

尽管我同意SWFObject是最好的方法,但您可以通过'src''movie' params传递值。 EX:

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