代码之家  ›  专栏  ›  技术社区  ›  James L

在Silverlight中接收来自HtmlPage主机的回调

  •  1
  • James L  · 技术社区  · 15 年前

    我想接收来自Javascript代码到Silverlight主机的回调 没有 使用ScriptableAttribute。我以前见过,但我不知道他们是怎么做到的。有人有什么想法吗?谢谢

    2 回复  |  直到 15 年前
        1
  •  3
  •   AnthonyWJones    15 年前

    很简单用途:-

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

    在托管silverlight的页面的javascript中拥有:-

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

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

    现在您可以将此函数提供给类似javascript的用户这是:-

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

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

    alert(sayHello("Fred"));
    
        2
  •  0
  •   Ken Smith    15 年前

    如果您使用的是事件,理论上,您可以使用AttachEvent订阅事件。这和回调不太一样,但很接近。

    注意:我还没有在基于Mozilla的浏览器上测试AttachEvent(其中适当的JS命令是“addEventListener()”而不是“AttachEvent()”),而且我在让AttachEvent()即使在IE中也能可靠地工作时遇到了问题。所以我总是使用[ScriptableMember]属性,并从JS调用它。你不想用这个有什么原因吗?(我很想知道是否有人有更好的主意。)