Javascript 在Silverlight中接收来自HtmlPage主机的回调
我希望在不使用ScriptableAttribute的情况下接收从Javascript代码到Silverlight主机的回调。我以前看过,但我不知道他们是怎么做的。有人有什么想法吗?谢谢使用非常简单:-Javascript 在Silverlight中接收来自HtmlPage主机的回调,javascript,silverlight,Javascript,Silverlight,我希望在不使用ScriptableAttribute的情况下接收从Javascript代码到Silverlight主机的回调。我以前看过,但我不知道他们是怎么做的。有人有什么想法吗?谢谢使用非常简单:- HtmlPage.Window.Invoke("someJavascriptFunc", "Hello", "World"); 在承载silverlight的页面的javascript中,有:- function someJavascriptFunc(p1, p2) { ale
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));
alert(sayHello("Fred"));
如果您使用的是事件,理论上,您可以使用AttachEvent订阅事件。这与回调并不完全相同,但很接近
警告:我还没有在基于Mozilla的浏览器上测试AttachEvent(其中适当的JS命令是“addEventListener()”而不是“AttachEvent()”),而且我在IE中也很难让AttachEvent()可靠地工作。所以我总是使用[ScriptableMember]属性,并从JS调用它。你不想用这个有什么原因吗?(我很想知道是否有人有更好的想法。)我认为这是相反的方向:从SL到JS。我认为他想要另一种方式,从JS到SL。我以前从未见过这种技术。美好的