我希望在没有的情况下使用ScriptableAttribute从Javascript代码接收回调到我的Silverlight主机。我以前见过它,但我无法弄清楚他们是怎么做到的。有没有人有任何想法?感谢
答案 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调用它。有没有理由你不想使用它? (我很想知道是否有人有更好的想法。)