是否可以從Javascript中純粹按名稱引用Silverlight方法,然後調用它?用純JavaScript對象,你會是這樣的:使用Javascript從名稱中調用Silverlight方法
var f = theObj["theMethodName"];
f.call(theObj, "an arg");
但治療的Silverlight對象作爲關聯數組似乎並不工作。
我猜我可以使用Eval作爲最後的手段,但我寧願避免它。
是否可以從Javascript中純粹按名稱引用Silverlight方法,然後調用它?用純JavaScript對象,你會是這樣的:使用Javascript從名稱中調用Silverlight方法
var f = theObj["theMethodName"];
f.call(theObj, "an arg");
但治療的Silverlight對象作爲關聯數組似乎並不工作。
我猜我可以使用Eval作爲最後的手段,但我寧願避免它。
HtmlPage.Window.Invoke(「theMethodName」,「An arg」);
OR
VAR OBJ = HtmlPage.Document.GetElementByID( 「theObj」); obj.Invoke(「theMethodName」,「an Arg」);
...
嗯,重新閱讀它......沒有,沒有進入反射API。你必須正式公開它。它仍然是一個託管對象......只是在JScript中作爲「對象」公開。所以與原型對象不一樣。
問題是如何從Javascript調用名稱的Silverlight函數。您可以通過啓用using the ScriptableMember attribute腳本的方法直接輕鬆地調用對象上的方法,但不能直接將其作爲字符串調用。
我認爲你被eval卡住了。
這工作:
theObj["theMethodName"]("an arg");
但這並不:
theObj["theMethodName"].apply(null, "an arg");
至少我沒使用應用(和呼叫):(
AFAICT這是調用的Javascript來自Silverlight,我以另一種方式 - 從javascript調用Silverlight – 2010-10-18 21:46:58