Reputation: 25738
Is it possible to get a reference to a Silverlight method purely by name from Javascript, and then invoke it? With pure Javascript objects you would be something like this:
var f = theObj["theMethodName"];
f.call(theObj, "an arg");
But treating a Silverlight object as an associative array doesn't seem work.
I'm guessing I could probably use Eval as a last resort, but I'd rather avoid it.
Upvotes: 1
Views: 1649
Reputation: 9500
This works:
theObj["theMethodName"]("an arg");
But this does not:
theObj["theMethodName"].apply(null, "an arg");
at least I didn't manage to use apply (and call) :(
Upvotes: 0
Reputation: 53115
The question is on how to call a Silverlight function from Javascript by name. You can easily call methods on an object directly by enabling a method for scripting using the ScriptableMember attribute, but you can't invoke it as a string directly.
I think you're stuck with eval.
Upvotes: 2
Reputation: 7458
HtmlPage.Window.Invoke("theMethodName", "An arg");
OR
var obj = HtmlPage.Document.GetElementByID("theObj"); obj.Invoke("theMethodName", "an Arg");
...
Ah, re-reading it...no, no access to the reflection API. You'd have to expose it formally. Its still a managed object...just exposed as an 'object' in JScript. So not the same as a prototype object.
Upvotes: 1