是否可以纯粹通过Javascript中的名称来引用Silverlight方法,然后调用它?使用纯Javascript对象,您将是这样的:
var f = theObj["theMethodName"];
f.call(theObj, "an arg");
但是将Silverlight对象视为关联数组似乎不起作用。
我猜我可能会使用Eval作为最后的手段,但我宁愿避免它。
答案 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):(