1

我有一个基于银光的 Web 应用程序。我使用 ScriptObject 连接和调用 java 脚本中的方法,然后 java 脚本与插件交互。从 c# 到 java 脚本的所有函数调用都是同步的。现在我正在尝试使用 web 套接字服务器来替换插件。

现在我只是更改 java 脚本文件中方法的代码以与 Web 套接字服务器交互。由于 web Socket 调用本质上是异步的,我无法实现从 c# 到 java 脚本的调用并返回值。

现在我想从 java 脚本调用回调到 c# 代码。这可能吗?

请建议如何解决这个问题。

4

1 回答 1

0

这是可能的。

你像这样注释一个类:

public class MyScriptableManagedType {
        [ScriptableMember()]
        public string MyToUpper(string str) {
            return str.ToUpper();
        }

        [ScriptableMember()]
        public string Name { get; set; }
}

把它放在页面的javascript对象范围内:

MyScriptableManagedType smt = new MyScriptableManagedType();

HtmlPage.RegisterScriptableObject("mySLapp", smt);

然后你可以像这样从javascript中使用它:

var slCtl = null;
function pluginLoaded(sender,args){
     slCtl  = sender.getHost();
     alert(slCtl.Content.mySLapp.MyToUpper("Test String"));
}

函数 pluginLoaded 必须注册到 silverlight 插件才能在加载时调用。

从以下网址获取更多详细信息:

http://msdn.microsoft.com/en-us/library/cc221414(v=vs.95).aspx

于 2013-11-13T11:32:06.093 回答