开发者

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 wo开发者_开发问答uld 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.


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.


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.


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) :(

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜