Call Silverlight methods from Javascript by name

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.

Add Comment
3 Answer(s)

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) 🙁

Answered on July 11, 2016.
Add Comment

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.

Answered on July 11, 2016.
Add Comment

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.

Answered on July 11, 2016.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.