2010-10-18 49 views
1

是否可以從Javascript中純粹按名稱引用Silverlight方法,然後調用它?用純JavaScript對象,你會是這樣的:使用Javascript從名稱中調用Silverlight方法

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

但治療的Silverlight對象作爲關聯數組似乎並不工作。

我猜我可以使用Eval作爲最後的手段,但我寧願避免它。

回答

1

HtmlPage.Window.Invoke(「theMethodName」,「An arg」);

OR

VAR OBJ = HtmlPage.Document.GetElementByID( 「theObj」); obj.Invoke(「theMethodName」,「an Arg」);

...

嗯,重新閱讀它......沒有,沒有進入反射API。你必須正式公開它。它仍然是一個託管對象......只是在JScript中作爲「對象」公開。所以與原型對象不一樣。

+0

AFAICT這是調用的Javascript來自Silverlight,我以另一種方式 - 從javascript調用Silverlight – 2010-10-18 21:46:58

2

問題是如何從Javascript調用名稱的Silverlight函數。您可以通過啓用using the ScriptableMember attribute腳本的方法直接輕鬆地調用對象上的方法,但不能直接將其作爲字符串調用。

我認爲你被eval卡住了。

0

這工作:

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

但這並不:

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

至少我沒使用應用(和呼叫):(