按名称从Javascript调用Silverlight方法

时间:2010-10-18 21:18:47

标签: silverlight

是否可以纯粹通过Javascript中的名称来引用Silverlight方法,然后调用它?使用纯Javascript对象,您将是这样的:

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

但是将Silverlight对象视为关联数组似乎不起作用。

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

3 个答案:

答案 0 :(得分:2)

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

我认为你坚持使用eval。

答案 1 :(得分:1)

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

OR

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

...

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

答案 2 :(得分:0)

这有效:

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

但这不是:

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

至少我没有设法使用apply(和call):(