2010-10-18 42 views
1

是否可以从Javascript中纯粹按名称引用Silverlight方法,然后调用它?用纯JavaScript对象,你会是这样的:使用Javascript从名称中调用Silverlight方法

var f = theObj["theMethodName"];  
f.call(theObj, "an arg"); 

但治疗的Silverlight对象作为关联数组似乎并不工作。

我猜我可以使用Eval作为最后的手段,但我宁愿避免它。

回答

1

HtmlPage.Window.Invoke(“theMethodName”,“An arg”);

OR

VAR OBJ = HtmlPage.Document.GetElementByID( “theObj”); obj.Invoke(“theMethodName”,“an Arg”);

...

嗯,重新阅读它......没有,没有进入反射API。你必须正式公开它。它仍然是一个托管对象......只是在JScript中作为“对象”公开。所以与原型对象不一样。

+0

AFAICT这是调用的Javascript来自Silverlight,我以另一种方式 - 从javascript调用Silverlight – 2010-10-18 21:46:58

2

问题是如何从Javascript调用名称的Silverlight函数。您可以通过启用using the ScriptableMember attribute脚本的方法直接轻松地调用对象上的方法,但不能直接将其作为字符串调用。

我认为你被eval卡住了。

0

这工作:

theObj["theMethodName"]("an arg");  

但这并不:

theObj["theMethodName"].apply(null, "an arg"); 

至少我没使用应用(和呼叫):(