从Silverlight中的HtmlPage主机接收回调

时间:2010-09-21 15:04:39

标签: javascript silverlight

我希望在没有的情况下使用ScriptableAttribute从Javascript代码接收回调到我的Silverlight主机。我以前见过它,但我无法弄清楚他们是怎么做到的。有没有人有任何想法?感谢

2 个答案:

答案 0 :(得分:3)

使用简单: -

 HtmlPage.Window.Invoke("someJavascriptFunc", "Hello", "World");

在主持Silverlight的页面中的javascript中有: -

 function someJavascriptFunc(p1, p2)
 {
     alert(p1 + ' ' + p2);
 }

编辑:肯是对的,上面的方法是错误的。

假设您在Silverlight中具有此功能: -

string GetStuff(string name)
{
     return "Hello " + name;
}

您现在可以将此功能设为javascript,如下所示: -

HtmlPage.Window.SetProperty("sayHello", new Func<string, string>(GetStuff));    

现在javascript中的代码可以简单地执行以下操作: -

alert(sayHello("Fred"));

答案 1 :(得分:0)

如果您正在使用事件,理论上,您可以使用AttachEvent订阅事件。这与回调并不完全相同,但它很接近。

警告:我没有在基于Mozilla的浏览器上测试AttachEvent(其中相应的JS命令是“addEventListener()”而不是“attachEvent()”),并且我无法让AttachEvent()可靠地工作甚至在IE中。所以我一直只使用[ScriptableMember]属性,并从JS调用它。有没有理由你不想使用它? (我很想知道是否有人有更好的想法。)